OtsoSilver

Untitled

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