2017-01-04 4 views
1

Swift 3のゲームをSpriteKitで開発しています。Swift 3エラーで2つのCGPointオペランドを減算できません

私は以下の条件にいくつか問題があります。

if (personaje.position - lastTouchLocation).length() < pjPixelsPerSecond * CGFloat(dt){ 
    velocity = CGPoint.zero 
} else { 
    moveSprite(sprite: personaje, velocity: velocity) 
} 

私は次のエラーを取得する:

Binary operator '-' cannot be applied to two 'CGPoint' operands.

どのように私は、これら2つの変数を引くことができますか?

そして、私が得た:

var personaje = SKSpriteNode(imageNamed: "personajee") 
var velocity = CGPoint.zero 
var lastTouchLocation = CGPoint.zero 
… 

func sceneTouched (touchLocation: CGPoint) { 
    lastTouchLocation = touchLocation 
    movePjToLocation(location: touchLocation) 

} 
+1

CGPointに '-'オーバーロードを定義しましたか? – Hamish

答えて

2

あなたが自分でCGPointため-オペレータを定義する必要があります。関数をクラスのスコープの外に宣言すると、プロジェクト全体に表示されます。

// Declare `-` operator overload function 
func -(lhs: CGPoint, rhs: CGPoint) -> CGPoint { 
    return CGPoint(x: lhs.x - rhs.x, y: lhs.y - rhs.y) 
} 
// TEST 
let point1 = CGPoint(x: 10, y: 10) 
let point2 = CGPoint(x: 5, y: 5) 
print(point1 - point2) //prints (5.0, 5.0) 
関連する問題