password22
@password22

Как заставить голову игрока следить за поворотом камеры?

Добрый день! Никак не могу додуматься как осуществить то, чтобы когда камера поворачивалась влево-вправо, игрок поворачивался вместе с ней (как и есть сейчас), но как сделать чтобы вверх-вниз поворачивалась только голова игрока? С таким скриптом поворачивается все тело игрока, как бы находясь впереди камеры.

Буду рад любой помощи. Заранее спасибо

public FixedJoystick _joystickMove;
    public DynamicJoystick _joystickDirection;

    CharacterController _character;
    Vector3 move = Vector3.zero;
    float gravity = -9.81f;

    public float minX = -360.0f;
    public float maxX = 360.0f;

    public float minY = -45.0f;
    public float maxY = 45.0f;

    public float sensX = 120.0f;
    public float sensY = 120.0f;

    float rotationY = 0.0f;
    float rotationX = 0.0f;

    private void Start()
    {
        _character = GetComponent<CharacterController>();
    }

    private void Update()
    {
        PlayerMovement();
    }

    private void PlayerMovement()
    {
        // этот джойстик за движение персонажа
        float hMove = _joystickMove.Horizontal;
        float vMove = _joystickMove.Vertical;

        // этот джойстик отвечает за повороты камеры
        float hDirection = _joystickDirection.Horizontal;
        float vDirection = _joystickDirection.Vertical;

        move = new Vector3(hMove, 0, vMove);
        move = Camera.main.transform.TransformDirection(move);
        move.y = gravity * Time.deltaTime;
        _character.Move(move * 0.5f);

        //поворот камеры вместе с игроком
        rotationX += hDirection * sensX * Time.deltaTime;
        rotationY += vDirection * sensY * Time.deltaTime;
        rotationY = Mathf.Clamp(rotationY, minY, maxY);
        
        // нужно чтобы вверх и вниз крутилась только голова, не сам персонаж

        transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
    }
  • Вопрос задан
  • 27 просмотров
Пригласить эксперта
Ответы на вопрос 1
DanceM
@DanceM Куратор тега Unity
Кто хочет -ищет способ, кто не хочет -ищет причину
Добавьте к камере пустой объект, выдвиньте его вперед подальше, будто она на него смотрит. После на голову скрипт с LookAt(), пусть смотрит на тот пустой объект. Ну а дальше останеться оси зафиксировать и ограничители добавить.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
25 янв. 2021, в 13:34
3000 руб./за проект
25 янв. 2021, в 13:09
3001 руб./за проект
25 янв. 2021, в 13:08
2000 руб./за проект