View difference between Paste ID: QD41Y2wJ and Bj1ugPce
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