https://i.stack.imgur.com/JQ9r6.png
上面你可以看到我的游戏图像。我有敌人产卵并在y轴向下移动。玩家可以在敌人到达墙壁之前击落他们。就像现在一样,玩家正在旋转到触摸的位置。我想要的是让子弹与旋转方向相同。就像现在一样,子弹直接前进。这是子弹的代码。
func spawnBullets(towards point: CGPoint) {
let bullet = SKSpriteNode(imageNamed: "Bullet")
bullet.zPosition = 1
bullet.position = CGPoint(x: player.position.x + 19, y:
player.position.y)
let action = SKAction.move(to: point, duration:
TimeInterval(1))
bullet.run(SKAction.repeatForever(action))
self.addChild(bullet)
}
这是旋转播放器的代码:
static let Pi = CGFloat(Double.pi)
static let DegreesToRadians = Pi / 180
override func touchesMoved(_ touches: Set<UITouch>, with event:
UIEvent?) {
let curTouch = touches.first!
let curPoint = curTouch.location(in: self)
let deltaX = self.player.position.x - curPoint.x
let deltaY = self.player.position.y - curPoint.y
let angle = atan2(deltaY, deltaX)
self.player.zRotation = angle + 90 * GameplayScene.DegreesToRadians
}
如何让子弹的方向和玩家轮换“同步”?
答案 0 :(得分:0)
旋转播放器。这一切都很好。但是,如果要使用SKAction,则不会考虑旋转。它只是说明一个绝对的立场。
你想要的是将子弹移向触摸位置(带点,而不仅仅是Y):
spawnBullet(towards point: CGPoint) {
// ...
let action = SKAction.moveTo(location: point, duration: 3.0)
}
然后将触摸位置传递给该功能。您需要获得适当的动作持续时间,以便子弹以所需的速度行进。