Advertisement
kadyr

Untitled

Oct 3rd, 2021
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 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.  
  25.  
  26. private float timer;
  27. public Text timeText;
  28.  
  29. void Update()
  30. {
  31. if (crystals < 5)
  32. {
  33. timer += Time.deltaTime;
  34. timeText.text = ((int)timer).ToString();
  35. }
  36. //Ускоряемся
  37. if (Input.GetKeyDown(KeyCode.LeftShift))
  38. {
  39. speed = 10;
  40. }
  41. if (Input.GetKeyUp(KeyCode.LeftShift))
  42. {
  43. speed = 5;
  44. }
  45.  
  46. // moveHorizontal будет принимать значение -1 если нажата кнопка A, 1 если нажата D, 0 если эти кнопки не нажаты
  47. float moveHorizontal = Input.GetAxis("Horizontal");
  48. // moveVertical будет принимать значение -1 если нажата кнопка S, 1 если нажата W, 0 если эти кнопки не нажаты
  49. float moveVertical = Input.GetAxis("Vertical");
  50.  
  51. if(controller.isGrounded)
  52. {
  53. //Редактируем переменную направления, используя moveHorizontal и moveVertical
  54. //Мы двигаемся по координатам x и z, координата y для прыжков, пока что этого не делаем.
  55. direction = new Vector3(moveHorizontal, 0, moveVertical);
  56. //Дополнительно умножая его на скорость передвижения (преобразуя локальные координаты к глобальным)
  57. direction = transform.TransformDirection(direction) * speed;
  58.  
  59. //Прыгаем
  60. if (Input.GetKeyDown(KeyCode.Space))
  61. {
  62. direction.y = 8;
  63. }
  64. }
  65.  
  66. direction.y -= gravity * Time.deltaTime;
  67. //Этой строчкой мы осуществляем изменение положения игрока на основе вектора direction
  68. //Time.deltaTime это количество секунд которое прошло с последнего кадра, для синхронизации по времени
  69. controller.Move(direction * Time.deltaTime);
  70. }
  71. [SerializeField] int crystals = 0;
  72.  
  73. private void OnTriggerEnter(Collider collider)
  74. {
  75. if (collider.tag == "Crystal")
  76. {
  77. print("crystal");
  78. Destroy(collider.gameObject);
  79. crystals = crystals + 1;
  80. scoreText.text = crystals.ToString();
  81. }
  82. }
  83. }
  84.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement