所以,我试图通过使用SpriteKit和Swift 3重新创建流行的App Store游戏 One More Line 来挑战自我;但是,我立刻遇到了一个大问题。
1)当用户点击时,如何让我的节点围绕另一个节点旋转
2)我希望我的节点继续朝着用户松开手指的方向移动(希望有意义......)。
有点像这样
在我的GameScene.sks中,我创建了一个不断旋转的中心节点和一个玩家。然后我这样做了:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
player.move(toParent: center)
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
player.move(toParent: self)
}
override func update(_ currentTime: TimeInterval) {
let dx = 5 * cos(player.zRotation)
let dy = 5 * sin(player.zRotation)
player.physicsBody?.applyImpulse(CGVector(dx: dx, dy: dy))
}
播放器向右移动,当我在节点周围点圈时,当我释放它时,它继续向右移动。
我知道我这一切都错了。任何帮助将非常感谢。谢谢!
答案 0 :(得分:0)
我不确定我是否完全理解你在寻找什么,但如果你只是想让一个精灵围绕一个中心精灵均匀旋转,添加中心精灵,另一个中心精灵(不可见)并添加你的外部精灵到无形的中心精灵。然后旋转你的两个中心精灵。调整outerObject的x位置,使outerObject更接近或远离中心对象。
import SpriteKit
import GameplayKit
class GameScene: SKScene {
override func didMove(to view: SKView) {
anchorPoint = CGPoint(x: 0.5, y: 0.5)
let centerObject = SKSpriteNode(texture: nil, color: UIColor.blue, size: CGSize(width: 20, height: 20))
addChild(centerObject)
let invisibleParent = SKSpriteNode()
addChild(invisibleParent)
let outerObject = SKSpriteNode(texture: nil, color: UIColor.red, size: CGSize(width: 50, height: 50))
outerObject.position.x = 100
invisibleParent.addChild(outerObject)
centerObject.run(SKAction.repeatForever(SKAction.rotate(byAngle: 1, duration: 1)))
invisibleParent.run(SKAction.repeatForever(SKAction.rotate(byAngle: -1, duration: 1)))
}
}