我想知道一个精灵是否面对另一个精灵?例如,我想让一个玩家有能力射击怪物,如果他将枪指向怪物的长度之间的任何地方。请帮忙!
答案 0 :(得分:2)
要确定玩家节点是否面向敌人节点,您需要计算节点之间的角度(参见图1中的角度θ)。
图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
}