我是SpriteKit游戏开发的新手。我正在尝试让老板角色能够向多个方向投掷火球(一次 16 个火球,相距 360 度/16 = 22.5 度)。我知道如何通过提供玩家当前的位置让他在某个位置开火,但是无论玩家的位置如何,如何让他以 16 个不同的角度开火?
提前感谢您的任何帮助。
首先,在角度上设置一个循环
let numAngles = 16
var angle:CGFloat = 0
var angleIncr = CGFloat(2 * M_PI) / CGFloat(numAngles)
let strength:CGFloat = 50
for _ in 0..<numAngles {
...
angle += angleIncr
}
在循环中,将角度转换为相应的矢量分量,然后创建矢量
let dx = strength * cos (angle)
let dy = strength * sin (angle)
let vector = CGVectorMake (dx, dy)
并创建一个新的火球,并对其物理体施加脉冲
let fireball = ...
fireball.position = player.position
fireball.zRotation = angle
// Add a physics body here
fireball.physicsBody?.appyImpulse (vector)
我不确定你有什么代码。 用于拍摄。 但病了,试一试。 Spritekit 中的角度以弧度为单位,A 在一个圆中有 2*pi 弧度。 所以你只需要做这样的事情
let fireballs = 16
let threeSixty = CGFloat(M_PI*2)
for i in 1...fireballs {
let angle = (CGFloat(i) / CGFloat(fireballs)) * threeSixty
// do something useful with your angle
}