所以,我正在尝试制作一个第一人称游戏,它使用与 Doom、Duke Nukem 等游戏相同的精灵机制。
到目前为止,我可以识别与静态对象相关的角度,但不能识别与旋转对象相关的角度。我有一些“敌人”会改变旋转并开始跟随我,但计算切线角度 (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) …Run Code Online (Sandbox Code Playgroud)