@nikitasalnikov
Новичок

Почему движение персонажа вслед за движением мышки не такой?

Здравствуйте. Изучаю написание кода для движения персонажа по книге "Unity в действии" Джозефа Хокинга. Дошел до кода, где показано движение персонажа по вертикали. но почему то по горизонтали поворачивается как положено, а по вертикали получается что персонаж наклоняется влево вправо, а не вверх вниз. так должно быть?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public enum RotationAxes
    {
        MouseXandY = 0,
        MouseX = 1,
        MouseY = 2

    }
    public RotationAxes axes = RotationAxes.MouseXandY;
    public float sesitivityHor = 9.0f;
    public float sensitivityVert = 9.0f;

    public float minimumVert = -45.0f;
    public float maximumVert = 45.0f;

    private float _rotationX = 0;

    // Start is called before the first frame update

    void Start()
    {
        Rigidbody body = GetComponent<Rigidbody>();
        if (body != null)
            body.freezeRotation = true;
        
    }

    // Update is called once per frame
    void Update()
    {
        if (axes == RotationAxes.MouseX)
		{
            transform.Rotate(0, Input.GetAxis("Mouse X") * sesitivityHor, 0, Space.World);
        }
        else if(axes == RotationAxes.MouseY)
        {
            
            _rotationX -= Input.GetAxis("Mouse Y") * sensitivityVert;
            _rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert);
            
            float rotationY = transform.localEulerAngles.y;
            transform.localEulerAngles = new Vector3(_rotationX, rotationY, 0);
        }
        else
        {
            _rotationX -= Input.GetAxis("Mouse Y") * sensitivityVert;
            _rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert);

            float delta = Input.GetAxis("Mouse X") * sesitivityHor;
            float rotationY = transform.localEulerAngles.y + delta;

            transform.localEulerAngles = new Vector3(_rotationX, rotationY, 0);
        }
    }
}

5e4b9d6632d53913377573.png
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
DanielMcRon
@DanielMcRon
C# && Unity
Был баг такой и у меня. На камеру нужно выбрать движение по y, на персонажа по x, чтобы был норм эффект
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы