2017-01-04 2 views
1

Я разрабатываю игру в Swift 3 с SpriteKit.Нельзя вычесть два операнда CGPoint в Swift 3 error

У меня возникли проблемы с условным ниже.

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.

Как я могу вычесть эти две переменные?

И я получил:

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) 
Смежные вопросы