@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
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
DanielMcRon
@DanielMcRon
C# && Unity
Был баг такой и у меня. На камеру нужно выбрать движение по y, на персонажа по x, чтобы был норм эффект
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
GD Company Санкт-Петербург
от 120 000 до 150 000 ₽
Mystery Tag Новосибирск
от 80 000 до 110 000 ₽
от 130 000 до 200 000 ₽
04 апр. 2020, в 21:01
35000 руб./за проект
04 апр. 2020, в 20:32
5000 руб./за проект