Advertisement
kadyr

Untitled

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