如何让老板角色立刻向四面八方射击

时间:2016-02-19 19:21:48

标签: sprite-kit game-physics

我是SpriteKit游戏开发的新手。我试图让一个老板角色能够向多个方向投掷火球(同时16个火球,360度/ 16 =相隔22.5度)。 我知道如何通过提供玩家的当前位置让他在某个位置射击,但是如何让他在16个不同的角度射击而不管玩家的位置如何?

感谢您提前提供任何帮助。

2 个答案:

答案 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
}