logo
ИнКО "Сайт педагога ДО"

 

Player Error 3D

Контроллер движения игрока

Контроллер движения обрабатывает нажатие клавиш на клавиатуре или кнопок на игровом джойстике.

-- Клавиатура --

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

Например, для передвижения игрока вверх/влево/вниз/вправо часто используются клавиши w/a/s/d.

Для того, чтобы опросить клавиатуру в движке Unity 6, необходимо подключить пакет UnityEngine.InputSystem и использовать класс Keyboard. В классе Keyboard перечислены все клавиши клавиатуры, а для того, чтобы определить нажата ли клавиша, используется атрибут isPressed.

-- Перемещение --

Чтобы перемещать игрока в пространстве игрового мира, без учета физики, достаточно использовать метод transform.

-- 3D модель --

3D модель игрока, созданная в программе Blender, импортируется в Unity, вместе с разработанной анимацией. Из режимов анимации конструируется аниматор Animator. Сконструированный аниматор используется в контроллере игрока.

Код

Таким образом, для клавиш w/a/s/d, получаем нижеприведенный листинг кода, который осуществляет передвижение игрока по нажатию клавиш w/a/s/d.:


using UnityEngine;
using UnityEngine.InputSystem;

public class Player : MonoBehaviour
{
   Animator player_animator;
   Keyboard keyboard;
   public float movementSpeed = 5.0f;

   // Метод Start() вызывается однажды,перед самым первым вызовом Update()
   void Start()
   {
       player_animator= GetComponent<Animator>();
       player_animator.SetTrigger("stay");

       keyboard = Keyboard.current;
   }

   // Метод Update() вызывается один раз за игровой фрейм
   void Update()
   {
       if (keyboard != null)
       {
           if (keyboard.wKey.isPressed)
           {
               player_animator.SetTrigger("walk");
               transform.position += Vector3.up * Time.deltaTime * movementSpeed;
           }
           else if (keyboard.sKey.isPressed)
           {
               player_animator.SetTrigger("walk");
               transform.position += Vector3.down * Time.deltaTime * movementSpeed;
           }
           else if (keyboard.aKey.isPressed)
           {
               player_animator.SetTrigger("walk");
               transform.position += Vector3.left * Time.deltaTime * movementSpeed;
           }
           else if (keyboard.dKey.isPressed)
           {
               player_animator.SetTrigger("walk");
               transform.position += Vector3.right * Time.deltaTime * movementSpeed;
           }
           else
           {
               player_animator.SetTrigger("stay");
           }
       }
   }
}


Скрипт работает таким образом, что если клавиши w/a/s/d нажаты, то устанавливается триггер аниматора walk, а если не нажаты, тогда режим аниматора переключается триггером stay.

 

Файлы контроллера

Скрипт контроллера доступен для скачивания по ссылке Player.cs.


Файлы проекта:  Player.cs

Контроллер движения

Контроллер камеры

Группа 1
Описание

Группа 3
Описание

Группа "Наставники"
Описание

Группа "Альфы"
Описание

Группа 2
Описание