Advertisement
kadyr

Untitled

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