следующий код сделает объект (указанный в параметре) лицом в направлении, куда смотрит основная камера:
public void lookInDirectionOfCamera(Transform object) {
RayCastHit hit;
if (Physics.raycast(cameraMain.transform.position, cameraMain.transform.forward, out hit)) {
object.forward = hit.point - object.position;
}else { //if the raycast didnt hit anything, make the object face 100 units in front of the camera
Vector3 point = Camera.main.transform.position + Camera.main.transform.forward * 100;
object.forward = point - object.position;
}
}
Это заставит игрока повернуться лицом к точке, направленной ккамера.Если вы просто хотите, чтобы они имели одинаковое вращение по оси Y, не используйте кватернионы!Вместо этого вы можете просто сделать это с углами Эйлера:
transform.eulerAngles = new Vector3(transform.eulerAngles.x,
cameraMain.transform.eulerAngles.y,
transform.eulerAngles.y);
Причина, по которой вы не используете transform.localRotation, заключается в том, что это кватернион.Компонент y в кватернионе не совпадает с осью y в углу Эйлера (то, что вы привыкли видеть), кватернионы очень запутанные, поэтому вам почти никогда не следует устанавливать в них отдельные значения.Если вы хотите редактировать их, используйте только встроенные методы.