Ios 如何让敌人的精灵向玩家射击

Ios 如何让敌人的精灵向玩家射击,ios,xcode,sprite-kit,Ios,Xcode,Sprite Kit,我正在使用精灵套件创建一个游戏 我有一个玩家节点,我通过触摸来控制,但是我有一个敌人节点,它自己移动。我需要敌人能够自己发射炮弹。我猜我需要一个方法来处理这个问题并调用它。无论我的球员在哪里,我都需要射弹的方向。有什么建议吗 以下是我的方法: -(void)monstershoot { SKSpriteNode * projectile = [SKSpriteNode spriteNodeWithImageNamed:@"projectile"]; projectile.position

我正在使用精灵套件创建一个游戏

我有一个玩家节点,我通过触摸来控制,但是我有一个敌人节点,它自己移动。我需要敌人能够自己发射炮弹。我猜我需要一个方法来处理这个问题并调用它。无论我的球员在哪里,我都需要射弹的方向。有什么建议吗

以下是我的方法:

  -(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]]];
}
-(无效)怪物射击
{
SKSpriteNode*射弹=[SKSpriteNode SPRITENODEWITHIMAGENAME:@“射弹”];
射弹位置=_敌人位置;
CGPoint offset=rwSub(_player.position,sparket.position);
如果(offset.x在两种情况下它将“不起作用”:图像不存在或者敌人在玩家的右边。替换这一行

if (offset.x <= 0) return;
此外,您应该使用shootAmount的长度来计算

float realMoveDuration = 1000 / velocity;

这将为你提供相同(且正确)的每一个射弹速度。但除此之外,我认为你的代码没有任何错误。

什么是“什么都没有发生”的意思?没有射弹被敌人射中。敌人就在那里。重点是他们向我的玩家射击。但是“什么都没有发生”@CHBuckinghamNSLog offset,你会明白原因的。:-)我没有注意到if语句需要更改。很简单。你是对的,敌人是对的。谢谢你@robert
float realMoveDuration = 1000 / velocity;