目前我正在嘗試在觸摸螢屏的一側時將 SKSpriteNode 旋轉到 45 度,在觸摸另一側時將其旋轉到 -45 度,并在觸摸結束時回傳零。問題不是流暢地從-45到0或-45到45的最快路線,它似乎多次快速地旋轉相反的方向,直到達到上述程度。這是我當前的代碼:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if let touch = touches.first {
let location = touch.previousLocation(in: self)
let position = touch.location(in: self)
let node = self.nodes(at: location).first
//IF LEFT SCREEN IS TOUCHED
if position.x < 0 {
let rotate = CGFloat(45.0 * .pi / 180)
let rotateAction = SKAction.rotate(toAngle: rotate, duration: 0.2)
car.run(rotateAction, withKey: "rotating")
//IF RIGHT SCREEN IS TOUCHED
} else {
let rotate2 = CGFloat(-45.0 * .pi / 180)
let rotateAction2 = SKAction.rotate(toAngle: rotate2, duration: 0.2)
car.run(rotateAction2, withKey: "rotating")
}
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
car.removeAction(forKey: "rotating")
let rotate4 = CGFloat(0.0 * .pi / 180)
let rotateAction4 = SKAction.rotate(toAngle: rotate4, duration: 0.2)
car.run(rotateAction4, withKey: "rotating4")
}
uj5u.com熱心網友回復:
添加一個shortestUnitArc: true引數:
let rotateAction = SKAction.rotate(toAngle: rotate, duration: 0.2, shortestUnitArc: true)
請注意,有許多多載rotate:
rotate(toAngle:duration:)rotate(toAngle:duration:shortestUnitArc:)rotate(byAngle:duration:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/486950.html
