При использовании
transform.rotation = Quaternion.Euler(transform.rotation.x, 0, transform.rotation.x);
transform.rotation = Quaternion.Euler(0, 0, transform.rotation.z);
оба раза вы перезаписываете вращение с новыми значениями, дополнительно смешивая Эйлера (Vector3
) с Quaternion
полями ... transform.rotation.x
- это , а не чистое вращение вокруг оси X
, которую вы видите в Инспекторе Unity.
От того, насколько именно вы хотите * 1017, зависит немного* повернут в конце, но вы можете просто использовать Transform.RotateAround
как
transform.LookAt(Player);
transform.RotateAround(transform.position, transform.right, 90);
LookAt
по умолчанию приводит к повороту так, что transform.forward
указывает на цель, transform.right
остается направленным вправо (ish), а transform.up
остается направленным вверх (ish).Поэтому все, что вам нужно сделать, это вращаться вокруг этой локальной оси X transform.right
точно 90°
, поэтому теперь transform.forward
указывает вниз, а transform.up
указывает на цель.
, что приводит к
Если вы также хотите изменить другую ось, вы все равно можете дополнительно повернуть ее вокруг локальной оси transform.up
, например, чтобы перевернутьforward
вектор "вверх":
transform.LookAt(Player);
transform.RotateAround(transform.position, transform.right, 90);
transform.RotateAround(transform.position, transform.up, 180);
Есть ли на самом деле особая причина, почему вы делаете это в FixedUpdate
, а не в Update
?FixedUpdate
следует использовать только для материалов, связанных с физикой.