Попытка переместить Tracked Dolly по позициям пути при нажатии клавиши

Вопрос или проблема

Я пытаюсь настроить так, чтобы при нажатии клавиш e или w моя камера перемещалась к тем контрольным точкам, которые я установил на рельсах для куклы. Когда я вручную увеличиваю позицию на пути, это работает, но когда я пытаюсь написать скрипт для этого и изменить это значение, по какой-то причине он не позволяет мне добавить отслеживаемую куклу на экран компонента и всегда говорит “none”.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;

public class Move : MonoBehaviour
{
    public CinemachineTrackedDolly dolly;

    public void OnRotateRight(InputAction.CallbackContext context)
  {
    dolly.m_PathPosition = dolly.m_PathPosition + 1;
  }

  public void OnRotateLeft(InputAction.CallbackContext context)
  {
    dolly.m_PathPosition = dolly.m_PathPosition - 1;
  }
}

мой экран

Я пробовал разные блоки Cinemachine и просто не могу понять, что я делаю не так. Я также использую систему ввода для упрощения использования различных нажатий клавиш.

Ответ или решение

Для того чтобы ваша камера перемещалась по позициям точек на треке при нажатии клавиш ‘E’ или ‘W’, вы можете использовать следующее решение на основе вашего кода. Судя по описанию проблемы, у вас возникли затруднения с настройкой компонента CinemachineTrackedDolly и правильным использованием системы ввода. Давайте разберемся с этим подробнее.

Шаги для решения проблемы:

  1. Убедитесь, что у вас есть компонент Tracked Dolly:

    • Убедитесь, что вы добавили компонент CinemachineVirtualCamera на ваш объект камеры и добавили к нему компонент CinemachineTrackedDolly. Просто перетащите созданный объект виртуальной камеры на вашу камеру в иерархии, затем убедитесь, что у вас установлен путь (Path), к которому должен привязываться ваш Tracked Dolly.
  2. Проверьте настройки в инспекторе:

    • Когда вы выберете вашу CinemachineVirtualCamera, убедитесь, что в инспекторе правильно настроены Tracked Dolly. Путь должен быть выбран, и Tracked Dolly должен ссылаться на этот путь. Если вы видите None это означает, что переменная dolly не инициализирована.
  3. Измените скрипт для работы с вводом:

    • Если вы используете новую систему ввода Unity, вам необходимо правильно обрабатывать события ввода. Вот исправленный вариант вашего скрипта:
using UnityEngine;
using Cinemachine;
using UnityEngine.InputSystem;

public class Move : MonoBehaviour
{
    public CinemachineVirtualCamera virtualCamera; //ссылка на CinemachineVirtualCamera
    private CinemachineTrackedDolly dolly;

    private void Start()
    {
        // Получаем компонент Tracked Dolly из виртуальной камеры
        if (virtualCamera != null)
        {
            dolly = virtualCamera.GetCinemachineComponent<CinemachineTrackedDolly>();
        }
    }

    public void OnRotateRight(InputAction.CallbackContext context)
    {
        if (context.started && dolly != null)
        {
            dolly.m_PathPosition += 1f; // Увеличиваем позицию пути
        }
    }

    public void OnRotateLeft(InputAction.CallbackContext context)
    {
        if (context.started && dolly != null)
        {
            dolly.m_PathPosition -= 1f; // Уменьшаем позицию пути
        }
    }
}
  1. Настройка ввода:
    • Убедитесь, что у вас корректно настроены действия ввода в вашем Input Action Asset. Вам нужно будет привязать действия OnRotateRight и OnRotateLeft к необходимым клавишам (например, ‘E’ и ‘W’) в редакторе Input System.

Советы:

  • Проверка значений PathPosition: Вы можете использовать временные переменные для отладки и следить за значением dolly.m_PathPosition, чтобы убедиться, что оно изменяется, когда вы нажимаете клавиши.
  • Лимитация значений: Чтобы избежать выход за пределы пути, можно добавить условие:
if (dolly != null)
{
    dolly.m_PathPosition = Mathf.Clamp(dolly.m_PathPosition, 0, maxPathPosition); // Замените maxPathPosition на максимальную позицию вашего пути
}

Заключение:

Следуя данным шагам, вы сможете успешно настроить перемещение камеры по пути при нажатии клавиш. Убедитесь, что все компоненты правильно связаны и настроены, чтобы избежать любых ошибок. Если у вас будут дополнительные вопросы, не стесняйтесь обращаться за помощью!

Оцените материал
Добавить комментарий

Капча загружается...