SHOW:
|
|
- or go back to the newest paste.
| 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 |