(UNITY) Проблема с поворотом объекта по Y

Дело в том, что у меня есть корабль. Понятное дело - летить, нажимаешь лево - летить влево, жмёшь право - летит вправо, всё работает. Теперь я создал ещё один скрипт чисто для модельки, который будет анимировать её наклонение. Запускаю, инспектор решил, что моделька поворачивается, хотя самого поворота нету в игре, то есть скрипт работает, а визуально кажется что нет.

Скрипт анимирования

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AnimationModel : MonoBehaviour
{
    private Rigidbody Model;
    public Rigidbody Player;

    public float rotationStrength; //15
    // Start is called before the first frame update
    void Start()
    {
        Model = GetComponent<Rigidbody>();
        Player = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        Model.transform.rotation = Quaternion.Euler(0, Player.rotation.y, -moveHorizontal * rotationStrength);
    }
}

Скрипт управления игрока

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMove : MonoBehaviour
{   
    public float speed; // 50
    public float rotate; // 80
    public float tilt; // 25

    public Rigidbody Player;

    // Start is called before the first frame update
    void Start()
    {
        Player = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical") + 1.5f;

        Player.transform.Translate(Vector3.forward * moveVertical * speed * Time.deltaTime);
        Player.transform.Rotate(Vector3.up * moveHorizontal * rotate * Time.deltaTime);
    }
}

Ответы (1 шт):

Автор решения: Ananac _0

Вы поворачиваете Rigidbody, а нужно объект, если я всё правильно понял. Попробуйте:

void Update() {
 float moveHorizontal = Input.GetAxis("Horizontal");
 this.transform.rotation = Quaternion.Euler(0, Player.rotation.y, -moveHorizontal * rotationStrength);
}

Или:

public GameObject Obj; //Объект, который нужно вращать
public float rotationStrength; //15

void Update() {
 float moveHorizontal = Input.GetAxis("Horizontal");
 Obj.transform.rotation = Quaternion.Euler(0, Player.rotation.y, -moveHorizontal * rotationStrength);
}
→ Ссылка