giganciprogramowania

AlienLeaderScript l16

Jun 16th, 2023
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using UnityEngine;
  2.  
  3. public class AlienLeaderScript : MonoBehaviour
  4. {
  5.     public GameObject alienBullet; //pole na prefab pocisku
  6.     public float speed = 10.0f; //prędkość poruszania się
  7.     public float borderValue = 8f; //wartość graniczna z lewej i prawej strony w osi x
  8.     //Dzięki temu, że punkt (0,0,0) znajduje się w samym środku wiemy, że do każdej krawędzi będziemy mieć taką samą odległość
  9.     Vector3 target; //punkt, który posłuży jako cel do którego podążą w danej chwili dowódca
  10.     Renderer rend; //dostęp do komponentu renderer
  11.  
  12.     private void Start()
  13.     {
  14.         //Określamy początkowy kierunek
  15.         target = new Vector3(borderValue, transform.position.y,transform.position.z);
  16.         rend = GetComponent<Renderer>();
  17.         rend.enabled = false; //wyłączamy widoczność
  18.     }
  19.  
  20.     //Rozpoczęcie działania dowódcy
  21.     public void StartLeader()
  22.     {
  23.         Invoke("Show", 10); //Wywołanie włączenia widoczności po 10 sekundach
  24.         InvokeRepeating("Shoot", 11, 4); //Wywołanie rozpoczęcia strzelania po 11 sekundach i następie strzelanie co 4
  25.     }
  26.  
  27.     //Wyłączenie działań dowódcy
  28.     public void StopLeader()
  29.     {
  30.         CancelInvoke("Shoot"); //Wyłączenie strzelania
  31.         Show(); //wyłączenie widoczności
  32.     }
  33.  
  34.     //strzelanie
  35.     void Shoot()
  36.     {
  37.         //wyliczenie pozycji, w któej pojawić się ma pocisk
  38.         Vector3 pos = transform.position - new Vector3(0, 1, 0);
  39.         //stworzenie nowego pocisku
  40.         Instantiate(alienBullet, pos, Quaternion.identity);
  41.     }
  42.  
  43.     //włączenie i wyłączeie widoczności
  44.     void Show()
  45.     {
  46.         //jeżeli komponent renderer jest włączony to należy wyłączyć
  47.         if(rend.enabled == true) rend.enabled = false;
  48.         //w przeciwnym wypadku włączyć
  49.         else rend.enabled = true;
  50.  
  51.     }
  52.  
  53.     //Ruch dowodcy
  54.     void Move()
  55.     {
  56.         //określenie o jaki krok ma się przesuwać postać
  57.         var step = speed * 10 * Time.deltaTime;
  58.         //przesunięcie w stronę celu
  59.         transform.position = Vector3.MoveTowards(transform.position, target, step);
  60.         //Jeżeli odległóść pomiędzy postacią a celem jest bliska zeru
  61.         if (Vector3.Distance(transform.position, target) < 0.001f)
  62.         {
  63.             //wylicz nowy cel, który znajdzie się po przeciwnej stronie
  64.             target = new Vector3(target.x * -1, transform.position.y, transform.position.z);
  65.         }
  66.     }
  67.  
  68.     void Update()
  69.     {
  70.         Move();
  71.     }
  72.  
  73.  
  74.  
  75. }
  76.  
Add Comment
Please, Sign In to add comment