(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);
}