Advertisement
Guest User

Untitled

a guest
Feb 25th, 2018
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.30 KB | None | 0 0
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using System.Collections;
  4.  
  5. /*
  6. * Skrypt odpowiedzialny za kontrole gracza.
  7. *
  8. * @author Hubert Paluch.
  9. * MViRe - na potrzeby kursu UNITY3D v5.
  10. * mvire.com
  11. */
  12. public class PlayerControler : MonoBehaviour {
  13.  
  14. //Obiekt odpowiedzialny za ruch gracza.
  15. public CharacterController characterControler;
  16. //Component odpowiedzialny za kontrolę staminy.
  17. public StaminaUI stamina;
  18.  
  19. //Predkosc biegania.
  20. public float akualnaPredkosc = 0f;
  21. //Prędkość poruszania się gracza.
  22. public float predkoscPoruszania = 5.0f;
  23. //Predkosc biegania.
  24. public float predkoscBiegania = 10.0f;
  25. //Wysokość skoku.
  26. public float wysokoscSkoku = 7.0f;
  27. //Aktualna wysokosc skoku.
  28. public float aktualnaWysokoscSkoku = 0f;
  29.  
  30. //Czulość myszki (Sensitivity)
  31. public float czuloscMyszki = 3.0f;
  32. public float myszGoraDol = 0.0f;
  33. //Zakres patrzenia w górę i dół.
  34. public float zakresMyszyGoraDol = 90.0f;
  35.  
  36. /** Menu główne.*/
  37. public GameObject menu;
  38.  
  39. /**
  40. * Pobranie prędkości poruszania się przód/tył.
  41. * jeżeli wartość dodatnia to poruszamy się do przodu,
  42. * jeżeli wartość ujemna to poruszamy się do tyłu.
  43. */
  44. private float rochPrzodTyl;
  45. /**
  46. * Pobranie prędkości poruszania się lewo/prawo.
  47. * jeżeli wartość dodatnia to poruszamy się w prawo,
  48. * jeżeli wartość ujemna to poruszamy się w lewo.
  49. */
  50. private float rochLewoPrawo;
  51. /** Zmienna dostarcza informację o tym czy gracz bienie.*/
  52. public bool czyBiegnie;
  53.  
  54. // Use this for initialization
  55. void Start () {
  56. stamina = GetComponent<StaminaUI>();
  57. characterControler = GetComponent<CharacterController>();
  58. akualnaPredkosc = predkoscPoruszania;
  59. }
  60.  
  61. // Update is called once per frame
  62. void Update() {
  63. if (!isDead () && !isMenuOn()) {
  64. klawiatura ();
  65. myszka ();
  66. }
  67. }
  68.  
  69. /**
  70. * Metoda odpowiedzialna za poruszanie się na klawiaturze.
  71. */
  72. private void klawiatura(){
  73. rochPrzodTyl = Input.GetAxis("Vertical") * akualnaPredkosc;
  74. rochLewoPrawo = Input.GetAxis("Horizontal") * akualnaPredkosc;
  75.  
  76. //Skakanie
  77. // Jeżeli znajdujemy się na ziemi i została naciśnięta spacja (skok)
  78. if(characterControler.isGrounded && Input.GetButton("Jump")){
  79. aktualnaWysokoscSkoku = wysokoscSkoku;
  80. } else if (!characterControler.isGrounded ){//Jezeli jestesmy w powietrzu(skok)
  81. //Fizyka odpowiadająca za grawitacje (os Y).
  82. aktualnaWysokoscSkoku += Physics.gravity.y * Time.deltaTime;
  83. }
  84.  
  85. //Bieganie
  86. if(Input.GetKeyDown("left shift") ) {
  87. czyBiegnie = true;
  88. } else if(Input.GetKeyUp("left shift")) {
  89. czyBiegnie = false;
  90. }
  91.  
  92. if (czyBiegnie && !czyBrakStaminy()) {
  93. akualnaPredkosc = predkoscBiegania;
  94. } else {
  95. akualnaPredkosc = predkoscPoruszania;
  96. }
  97.  
  98. //Tworzymy wektor odpowiedzialny za ruch.
  99. //rochLewoPrawo - odpowiada za ruch lewo/prawo,
  100. //aktualnaWysokoscSkoku - odpowiada za ruch góra/dół,
  101. //rochPrzodTyl - odpowiada za ruch przód/tył.
  102. Vector3 ruch = new Vector3(rochLewoPrawo, aktualnaWysokoscSkoku, rochPrzodTyl);
  103. //Aktualny obrót gracza razy kierunek w którym sie poruszamy (poprawka na obrót myszką abyśmy szli w kierunku w którym patrzymy).
  104. ruch = transform.rotation * ruch;
  105.  
  106. characterControler.Move(ruch * Time.deltaTime);
  107.  
  108. }
  109.  
  110. /**
  111. * Metoda odpowiedzialna za ruch myszką.
  112. */
  113. private void myszka(){
  114. //Pobranie wartości ruchu myszki lewo/prawo.
  115. // jeżeli wartość dodatnia to poruszamy w prawo,
  116. // jeżeli wartość ujemna to poruszamy w lewo.
  117. float myszLewoPrawo = Input.GetAxis("Mouse X") * czuloscMyszki;
  118. transform.Rotate(0, myszLewoPrawo, 0);
  119.  
  120. //Pobranie wartości ruchu myszki góra/dół.
  121. // jeżeli wartość dodatnia to poruszamy w górę,
  122. // jeżeli wartość ujemna to poruszamy w dół.
  123. myszGoraDol -= Input.GetAxis("Mouse Y") * czuloscMyszki;
  124.  
  125. //Funkcja nie pozwala aby wartość przekroczyła dane zakresy.
  126. myszGoraDol = Mathf.Clamp(myszGoraDol, -zakresMyszyGoraDol, zakresMyszyGoraDol);
  127. //Ponieważ CharacterController nie obraca się góra/dół obracamy tylko kamerę.
  128. Camera.main.transform.localRotation = Quaternion.Euler(myszGoraDol, 0, 0);
  129. }
  130.  
  131. /**
  132. * Metoda zwraca informację o tym czy gracz ciągle żyje.
  133. *
  134. * Zwraca 'true' jeżeli gracz jeszcze żyje w przeciwnym razei 'false'.
  135. */
  136. private bool isDead(){
  137. Zdrowie zdrowie = gameObject.GetComponent<Zdrowie> ();
  138. if (zdrowie != null && zdrowie.czyMartwy()) {
  139. return true;
  140. }
  141. return false;
  142. }
  143.  
  144. /**
  145. * Czy główne menu jest właczone.
  146. */
  147. public bool isMenuOn(){
  148. if (menu != null) {
  149. Canvas manuUI = menu.GetComponent<Canvas> ();
  150. if (manuUI != null) {
  151. return manuUI.enabled;
  152. }
  153. }
  154. return false;
  155. }
  156.  
  157. /**
  158. * Funkcja udostępnia informację o tym czy gracz wykonuje ruch (chodzi).
  159. * Jeżeli gracz chodzi to zwraca 'true' jeżeli nie to 'false'.
  160. */
  161. public bool czyGraczChodzi(){
  162. if (rochPrzodTyl != 0 || rochLewoPrawo != 0) {
  163. return true;
  164. }
  165. return false;
  166. }
  167.  
  168. /**
  169. * Funkcja dostarcza informacje o tym czy gracz biegnie.
  170. * Zwraca 'true' jeżelli gracz biegnie w przeciwnym razie 'false'.
  171. */
  172. public bool czyGraczBiegnie(){
  173. return czyBiegnie;
  174. }
  175.  
  176. private bool czyBrakStaminy(){
  177. if (stamina != null) {
  178. return stamina.brakStaminy();
  179. }
  180. return false;
  181. }
  182.  
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement