Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- public class AlienLeaderScript : MonoBehaviour
- {
- public GameObject alienBullet; //pole na prefab pocisku
- public float speed = 10.0f; //prędkość poruszania się
- public float borderValue = 8f; //wartość graniczna z lewej i prawej strony w osi x
- //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ść
- Vector3 target; //punkt, który posłuży jako cel do którego podążą w danej chwili dowódca
- Renderer rend; //dostęp do komponentu renderer
- private void Start()
- {
- //Określamy początkowy kierunek
- target = new Vector3(borderValue, transform.position.y,transform.position.z);
- rend = GetComponent<Renderer>();
- rend.enabled = false; //wyłączamy widoczność
- }
- //Rozpoczęcie działania dowódcy
- public void StartLeader()
- {
- Invoke("Show", 10); //Wywołanie włączenia widoczności po 10 sekundach
- InvokeRepeating("Shoot", 11, 4); //Wywołanie rozpoczęcia strzelania po 11 sekundach i następie strzelanie co 4
- }
- //Wyłączenie działań dowódcy
- public void StopLeader()
- {
- CancelInvoke("Shoot"); //Wyłączenie strzelania
- Show(); //wyłączenie widoczności
- }
- //strzelanie
- void Shoot()
- {
- //wyliczenie pozycji, w któej pojawić się ma pocisk
- Vector3 pos = transform.position - new Vector3(0, 1, 0);
- //stworzenie nowego pocisku
- Instantiate(alienBullet, pos, Quaternion.identity);
- }
- //włączenie i wyłączeie widoczności
- void Show()
- {
- //jeżeli komponent renderer jest włączony to należy wyłączyć
- if(rend.enabled == true) rend.enabled = false;
- //w przeciwnym wypadku włączyć
- else rend.enabled = true;
- }
- //Ruch dowodcy
- void Move()
- {
- //określenie o jaki krok ma się przesuwać postać
- var step = speed * 10 * Time.deltaTime;
- //przesunięcie w stronę celu
- transform.position = Vector3.MoveTowards(transform.position, target, step);
- //Jeżeli odległóść pomiędzy postacią a celem jest bliska zeru
- if (Vector3.Distance(transform.position, target) < 0.001f)
- {
- //wylicz nowy cel, który znajdzie się po przeciwnej stronie
- target = new Vector3(target.x * -1, transform.position.y, transform.position.z);
- }
- }
- void Update()
- {
- Move();
- }
- }
Add Comment
Please, Sign In to add comment