2017-01-04 2 views
1

Ich entwickle ein Spiel in Swift 3 mit SpriteKit.Kann nicht zwei CGPoint Operanden in Swift 3 subtrahieren Fehler

Ich habe einige Probleme mit der Bedingung unten.

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

bekomme ich folgende Fehlermeldung:

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

Wie kann ich diese beiden Variablen subtrahieren?

Und ich habe:

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

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

} 
+1

Haben Sie eine '-' Überladung für' CGPoint' definiert? – Hamish

Antwort

2

Sie haben für CGPoint selbst den - Operator zu definieren. Deklarieren Sie die Funktion außerhalb des Bereichs einer Klasse, sodass sie in Ihrem gesamten Projekt sichtbar ist.

// 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) 
Verwandte Themen