我正在尝试制作一款第一人称游戏,使用类似于《毁灭战士》、《杜克·纽科姆》等游戏的精灵机制。
目前为止,我可以确定自己与静态物体之间的角度关系,但不能确定旋转物体。我有一些“敌人”会改变旋转方向并开始跟随我,但是计算切线角度(Mathf.Atan2)没有考虑敌人的旋转。
以下是我目前正在使用的代码,适用于不旋转的对象:
int GetAngleIndex()
{
var dir = cam.transform.position - transform.parent.forward;
var enemyAngle = Mathf.Atan2(dir.z, dir.x) * Mathf.Rad2Deg;
if (enemyAngle < 0.0f)
enemyAngle += 360;
Debug.Log("Angle from the player is: " + enemyAngle);
if (enemyAngle >= 292.5f && enemyAngle < 337.5f)
return 8;
else if (enemyAngle >= 22.5f && enemyAngle < 67.5f)
return 2;
else if (enemyAngle >= 67.5f && enemyAngle < 112.5f)
return 3;
else if (enemyAngle >= 112.5f && enemyAngle < 157.5f)
return 4;
else if (enemyAngle >= 157.5f && enemyAngle < 202.5f)
return 5;
else if (enemyAngle >= 202.5f && enemyAngle < 247.5f)
return 6;
else if (enemyAngle >= 247.5f && enemyAngle < 292.5f)
return 7;
else if (enemyAngle >= 337.5f || enemyAngle < 22.5f)
return 1;
else return 0;
}
我已经搜寻了好几个小时,但仍找不到解决方案 :(