2016-03-04 3 views
0

Я использую активную роль Контроля третьего лица Opsive. Это довольно сложный третий контроллер людей, который управляет анимацией, повреждением, движением, входами, и т.д. и т.п. http://opsive.com/assets/ThirdPersonController/documentation.phpРедактировать скрипт, чтобы заставить персонажа двигаться в обращении Он стоит на

Я хотел бы обновить скрипт ControllerHandler.cs сделать шаг символов в направлении, в котором персонаж сталкивается , независимо от ориентации камеры. (В стиле старых игр Resident Evil)

В оригинальном сценарии персонаж будет двигаться вперед по отношению к тому направлению, в котором находилась камера.

Я получил совет по изменению строки в этом скрипте, но с изменениями персонаж движется вперед в одном фиксированном направлении. (EG: Когда я поворачиваюсь вправо с помощью клавиши D, а затем нажимаем W для перемещения вперед, символ возвращается назад в направлении, в котором он был первоначально обращен и перемещается в этом направлении.)

Оригинальная деталь сценарий:

#if ENABLE_MULTIPLAYER 
      if (isLocalPlayer) { 
#endif 
      if (m_Controller.Movement == RigidbodyCharacterController.MovementType.Combat || m_Controller.Movement == RigidbodyCharacterController.MovementType.Adventure) { 
       m_LookRotation = m_CameraTransform.rotation; 

Вот что кто-то сказал мне, чтобы изменить его на:

#if ENABLE_MULTIPLAYER 
      if (isLocalPlayer) { 
#endif 
      if (m_Controller.Movement == RigidbodyCharacterController.MovementType.Combat || m_Controller.Movement == RigidbodyCharacterController.MovementType.Adventure) { 
       m_LookRotation = Quaternion.Euler(PlayerInput.GetAxisRaw(Constants.YawInputName), 0, 0); 

к сожалению, это не тот результат, который я намеревался.

Любая помощь будет принята с благодарностью. Благодаря!

Вот ссылка на скрипт контроллера: https://docs.google.com/document/d/1B4sstqtCqRMCLuHuxEuA9I7tO_3W4aHqEZwr73uFDjY/edit?usp=sharing

ответ

1

Я думаю, что вы хотите

transform.position += transform.rotation * Vector3.forward; 

Полный блок кода будет выглядеть следующим образом ...

void Update() { 
     if (Input.GetKey(KeyCode.W)) { 
      transform.position += transform.rotation * Vector3.forward * MOVESPEED; 
     } 
} 
+0

Прошу прощения, но я довольно новичок в кодировании, все еще в значительной степени на начальной стадии обучения. Где бы я вставлял этот код? – Xeritan

+0

см. Обновленный ответ. установите MOVESPEED на что-то вроде 0.1 –

+0

Я должен был упомянуть, что я использую контроллер третьего лица Opsive из Unity Asset Store. Вот ссылка на скрипт контроллера: https://docs.google.com/document/d/1B4sstqtCqRMCLuHuxEuA9I7tO_3W4aHqEZwr73uFDjY/edit?usp=sharing – Xeritan

0

I получили его работу. Сначала взгляните на картинку, это поможет вам правильно настроить игрока. Мой игрок - всего два куба. Я добавил второй куб, чтобы дать лицо тому, куда указывает игрок. Я добавил эти 2 куба к родительскому объекту, и я перемещаю родительский объект с моим PlayerMovement.cs. enter image description here

public float rotSpeed; 
public float playerSpeed; 

    void Update() 
    { 
     if (Input.GetKey(KeyCode.RightArrow)) 
     { 
      transform.Rotate(Vector3.up, Time.deltaTime * rotSpeed); 
     } else if (Input.GetKey(KeyCode.LeftArrow)) 
     { 
      transform.Rotate(-Vector3.up, Time.deltaTime * rotSpeed); 
     } 
     if (Input.GetKey(KeyCode.UpArrow)) 
     { 
      transform.Translate(Vector3.forward * Time.deltaTime * playerSpeed); 
     } else if (Input.GetKey(KeyCode.DownArrow)) 
     { 
      transform.Translate(-Vector3.forward * Time.deltaTime * playerSpeed); 

     } 
    } 
+0

Извините, я думаю, что я недостаточно хорошо объяснил ситуацию в ОП. Я использую полный комплект контролера третьего лица от Opsive, приобретенный в Asset Store. Он довольно сложный и управляет анимацией, взаимодействием, способностями, такими как прогулка по уступам, скалолазание и плавание, повреждение, инвентарь, движение, входы, в основном все. Я отредактировал исходное сообщение, чтобы включить скрипт ControllerHandler.cs через google docs. Что мне нужно сделать, это обновить включенный скрипт, чтобы получить желаемые результаты, не нарушая ничего. Спасибо за ответ. Любая помощь приветствуется. – Xeritan

 Смежные вопросы

  • Нет связанных вопросов^_^