Advertisement
kadyr

Untitled

Jul 14th, 2021
1,244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.93 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3.  
  4. public class PlayerMove : MonoBehaviour
  5. {
  6.     void Start()
  7.     {
  8.         //Можете оставить ваш код здесь
  9.     }
  10.  
  11.     //Добавляем ссылку на компонент CharacterController в инспектор
  12.     [SerializeField] CharacterController controller;
  13.     //Добавляем ссылку на переменную speed (скорость игрока) в инспекторе
  14.     [SerializeField] float speed = 5f;
  15.     //Создаем переменную гравитации для падения
  16.     [SerializeField] float gravity = 50;
  17.     //Создаем переменную для силы прыжка
  18.     [SerializeField] float jumpForce = 40;
  19.  
  20.     //Создаем переменную для направления движения игрока
  21.     private Vector3 direction;
  22.  
  23.  
  24.     void Update()
  25.     {
  26.         // moveHorizontal будет принимать значение -1 если нажата кнопка A, 1 если нажата D, 0 если эти кнопки не нажаты
  27.         float moveHorizontal = Input.GetAxis("Horizontal");
  28.         // moveVertical будет принимать значение -1 если нажата кнопка S, 1 если нажата W, 0 если эти кнопки не нажаты
  29.         float moveVertical = Input.GetAxis("Vertical");
  30.  
  31.         //Редактируем переменную направления, используя moveHorizontal и moveVertical
  32.         //Мы двигаемся по координатам x и z, координата y для прыжков.
  33.         if (controller.isGrounded) //проверяем что мы неа земле (тема условий будет дальше)
  34.         {
  35.             direction = new Vector3(moveHorizontal, 0, moveVertical);
  36.             //Дополнительно умножая его на скорость передвижения (преобразуя локальные координаты к глобальным)
  37.  
  38.             direction = transform.TransformDirection(direction) * speed;
  39.  
  40.             if (Input.GetKey(KeyCode.Space)) //Проверяем что нажали пробел для прыжка
  41.             {
  42.                 direction.y = jumpForce;
  43.             }
  44.  
  45.             //Этой строчкой мы осуществляем изменение положения игрока на основе вектора direction
  46.             //Time.deltaTime это количество секунд которое прошло с последнего кадра, для синхронизации по времени
  47.  
  48.         }
  49.        
  50.         //Если будете добавлять что-то связанное с управлением, делайте это здесь
  51.        
  52.         direction.y -= gravity * Time.deltaTime;
  53.         controller.Move(direction * Time.deltaTime);
  54.  
  55.     }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement