Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using UnityEngine.SocialPlatforms.Impl;
- using UnityEngine.UI;
- public class PlayerMove : MonoBehaviour
- {
- void Start()
- {
- //задание 1
- print("Привет, Землянин!");
- print("Мои координаты:");
- print(transform.position);
- ScoreText.text = "0";
- }
- //Добавляем ссылку на компонент CharacterController в инспектор
- [SerializeField] CharacterController controller;
- //Добавляем ссылку на переменную speed (скорость игрока) в инспекторе
- [SerializeField] float speed = 5f;
- //Создаем переменную для направления движения игрока
- private Vector3 direction;
- //Создаем переменную гравитации для падения
- float gravity = 20;
- float time = 0;
- void Update()
- {
- if (crystals < 5)
- {
- time += Time.deltaTime;
- TimeText.text = time.ToString();
- }
- if (Input.GetKeyDown(KeyCode.LeftShift))
- {
- speed = 10;
- }
- if (Input.GetKeyUp(KeyCode.LeftShift))
- {
- speed = 5;
- }
- // moveHorizontal будет принимать значение -1 если нажата кнопка A, 1 если нажата D, 0 если эти кнопки не нажаты
- float moveHorizontal = Input.GetAxis("Horizontal");
- // moveVertical будет принимать значение -1 если нажата кнопка S, 1 если нажата W, 0 если эти кнопки не нажаты
- float moveVertical = Input.GetAxis("Vertical");
- if(controller.isGrounded)
- {
- //Редактируем переменную направления, используя moveHorizontal и moveVertical
- //Мы двигаемся по координатам x и z, координата y для прыжков, пока что этого не делаем.
- direction = new Vector3(moveHorizontal, 0, moveVertical);
- //Дополнительно умножая его на скорость передвижения (преобразуя локальные координаты к глобальным)
- direction = transform.TransformDirection(direction) * speed;
- //Прыгаем
- if (Input.GetKeyDown(KeyCode.Space))
- {
- direction.y = 8;
- }
- }
- direction.y -= gravity * Time.deltaTime;
- //Этой строчкой мы осуществляем изменение положения игрока на основе вектора direction
- //Time.deltaTime это количество секунд которое прошло с последнего кадра, для синхронизации по времени
- controller.Move(direction * Time.deltaTime);
- }
- [SerializeField] int crystals = 0;
- [SerializeField] Text TimeText;
- [SerializeField]
- private Text ScoreText;
- private void OnTriggerEnter(Collider collider)
- {
- if (collider.tag == "Crystal")
- {
- print("crystal");
- Destroy(collider.gameObject);
- crystals = crystals + 1;
- ScoreText.text = crystals.ToString();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement