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 |