Spritekit是面向另一个SKSpriteNode的SKSpriteNode

时间:2014-10-01 20:52:08

标签: rotation sprite-kit direction

我想知道一个精灵是否面对另一个精灵?例如,我想让一个玩家有能力射击怪物,如果他将枪指向怪物的长度之间的任何地方。请帮忙!

2 个答案:

答案 0 :(得分:2)

要确定玩家节点是否面向敌人节点,您需要计算节点之间的角度(参见图1中的角度θ)。

enter image description here

图1 图表显示了场景中节点之间的角度

通过取y的差的反正切除以x中的差来计算θ:

    CGFloat dx = enemy.position.x - player.position.x;
    CGFloat dy = enemy.position.y - player.position.y;

    theta = atan2f(dy, dx);

如果theta和玩家的zRotation之间的差异很小,则玩家面对敌人。

   if (fabs(theta-player.zRotation) < maxDifference) {
        // Do something here
   }

答案 1 :(得分:0)

if((isPlayerFacingLeft == true) && (_player.position.x > enemy.position.x))
{
    // player is on right of object and facing towards object
}

if((isPlayerFacingLeft == false) && (_player.position.x < enemy.position.x))
{
    // player is on left of object and facing towards object
}