我是SpriteKit游戏开发的新手。我试图让一个老板角色能够向多个方向投掷火球(同时16个火球,360度/ 16 =相隔22.5度)。 我知道如何通过提供玩家的当前位置让他在某个位置射击,但是如何让他在16个不同的角度射击而不管玩家的位置如何?
感谢您提前提供任何帮助。
答案 0 :(得分:2)
首先,在角度上设置一个循环
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)
答案 1 :(得分:1)
我不确定你的代码是什么。拍摄。但生病了这一点。 spritekit中的角度是弧度,圆圈中有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
}