Другой подход заключается в том, чтобы найти Вектор между позицией игрока и позицией врага var directionToEnemy = enemy.transform.position - player.transform.position
, а затем найти его проекцию на вектор right
трансформации игрока, имея значение> 0, когда враг находится справа от игрок:
var directionToEnemy = enemy.transform.position - player.transform.position;
var projectionOnRight = Vector3.Dot(directionToEnemy, player.transform.right);
if (projectionOnRight < 0)
{
if (waitTime == 0)
{
Debug.Log("LEFT");
FireGunsLeft();
}
}
else if (projectionOnRight > 0)
{
if (waitTime == 0)
{
Debug.Log("RIGHT");
FireGunsRight();
}
}
Вы также можете рассмотреть возможность проверки waitTime == 0
, прежде чем выполнять вычисления для относительной позиции.
если Mathf.Approximately(projectionOnRight, 0f)
возвращает истину, то враг находится прямо перед игроком, и вы можете выполнить FireGunsStraight()
или что-то еще, что у вас есть для этого случая.