如何让敌人精灵射向玩家

时间:2014-07-14 16:51:59

标签: ios xcode sprite-kit

我使用精灵套件来制作游戏。

我有一个玩家节点,我通过触摸控制,但后来我有一个独立移动的敌人节点。我需要敌人能够自己射击弹丸。我猜我需要一个方法来调用它。我需要射弹的方向射击我的球员所在的地方。有什么建议吗?

这是我的方法:

  -(void)monstershoot
 {

SKSpriteNode * projectile = [SKSpriteNode spriteNodeWithImageNamed:@"projectile"];
projectile.position = _enemy.position;

CGPoint offset = rwSub(_player.position, projectile.position);

if (offset.x <= 0) return;

[_background addChild:projectile];

CGPoint direction = rwNormalize(offset);
CGPoint shootAmount = rwMult(direction, 1000);
CGPoint realDest = rwAdd(shootAmount, projectile.position);

// 9 - Create the actions
float velocity = 480.0/1.0;
float realMoveDuration = self.size.width / velocity;
SKAction * actionMove = [SKAction moveTo:realDest duration:realMoveDuration];
SKAction * actionMoveDone = [SKAction removeFromParent];
[projectile runAction:[SKAction sequence:@[actionMove, actionMoveDone]]];
}

但是当我打电话时没有任何反应。

1 个答案:

答案 0 :(得分:0)

在两种情况下它将“无所作为”:图像不存在或敌人对玩家是正确的。替换此行

if (offset.x <= 0) return;

检查偏移向量的长度是否为0.您可以使用

编写一种计算长度的方法
sqrtf(powf(offset.x,2) + powf(offset.y,2))

此外,您应该使用shootAmount的长度来计算

float realMoveDuration = 1000 / velocity;

这将为每个射弹提供相同(和正确)的速度。但是否则我认为你的代码没有错。