Advertisement
kadyr

Untitled

Oct 3rd, 2021
1,075
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.11 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. public class PlayerMove : MonoBehaviour
  4. {
  5.  
  6.     void Start()
  7.     {
  8.         //задание 1
  9.         print("Привет, Землянин!");
  10.         print("Мои координаты:");
  11.         print(transform.position);
  12.     }
  13.    
  14.     //Добавляем ссылку на компонент CharacterController в инспектор
  15.     [SerializeField] CharacterController controller;
  16.     //Добавляем ссылку на переменную speed (скорость игрока) в инспекторе
  17.     [SerializeField] float speed = 5f;
  18.  
  19.     //Создаем переменную для направления движения игрока
  20.     private Vector3 direction;
  21.     //Создаем переменную гравитации для падения
  22.     float gravity = 20;
  23.     void Update()
  24.     {
  25.         //Ускоряемся
  26.         if (Input.GetKeyDown(KeyCode.LeftShift))
  27.         {
  28.             speed = 10;
  29.         }
  30.         if (Input.GetKeyUp(KeyCode.LeftShift))
  31.         {
  32.             speed = 5;
  33.         }
  34.  
  35.         // moveHorizontal будет принимать значение -1 если нажата кнопка A, 1 если нажата D, 0 если эти кнопки не нажаты
  36.         float moveHorizontal = Input.GetAxis("Horizontal");
  37.         // moveVertical будет принимать значение -1 если нажата кнопка S, 1 если нажата W, 0 если эти кнопки не нажаты
  38.         float moveVertical = Input.GetAxis("Vertical");
  39.  
  40.         if(controller.isGrounded)
  41.         {
  42.             //Редактируем переменную направления, используя moveHorizontal и moveVertical
  43.             //Мы двигаемся по координатам x и z, координата y для прыжков, пока что этого не делаем.
  44.             direction = new Vector3(moveHorizontal, 0, moveVertical);
  45.             //Дополнительно умножая его на скорость передвижения (преобразуя локальные координаты к глобальным)
  46.             direction = transform.TransformDirection(direction) * speed;
  47.  
  48.             //Прыгаем
  49.             if (Input.GetKeyDown(KeyCode.Space))
  50.             {
  51.                 direction.y = 8;
  52.             }
  53.         }
  54.  
  55.         direction.y -= gravity * Time.deltaTime;
  56.         //Этой строчкой мы осуществляем изменение положения игрока на основе вектора direction
  57.         //Time.deltaTime это количество секунд которое прошло с последнего кадра, для синхронизации по времени
  58.         controller.Move(direction * Time.deltaTime);
  59.     }
  60.     [SerializeField] int crystals = 0;
  61.  
  62.     private void OnTriggerEnter(Collider collider)
  63.     {
  64.         if (collider.tag == "Crystal")
  65.         {
  66.             print("crystal");
  67.             Destroy(collider.gameObject);
  68.             crystals = crystals + 1;
  69.         }
  70.     }
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement