Du bist nicht angemeldet.

Werbeanzeige

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 186

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

11

17.11.2017, 15:11

:wacko:


ich verzweifel wirklich... habe nun für einen nichtmenschlichen Bot eine KI geschrieben -
es funktioniert auch:

patroullieren: check.
wenn Ziel gesichtet, verfolgen: check.
wenn Ziel tot, zurück in den patrol-Status: check.

Aber dann findet der Durchlauf durch die Wegpunkte nicht mehr statt. Er bleibt einfach am nächsten Wegpunkt stehen.

Ich hoffe dieser Code-Ausschnitt (nur so ca 120 Zeilen) ist übersichtlich und für eure Augen ordentlich genug.
Ich finde diesen verka.... Fehler nicht ;( ;( ;(

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
void Start()
    {
        
        navigation.agent = this.GetComponent <NavMeshAgent > ();
        gun.timerB = gun.timer;
        navigation.agent.updatePosition = true;
        navigation.agent.updateRotation = true;  // tut= false;
        zustand.zstd = Hogan1.Zustand.ZSTD.PATROL;
        aktiv = true;
        StartCoroutine ("FSM");

    }

    IEnumerator FSM()
    {
        while (aktiv) 
        {
            switch (zustand.zstd) 
            {
            case Zustand .ZSTD .PATROL:
                Patrol ();
                break;
            case Zustand .ZSTD .CHASE:
                Chase ();
                break;
            }
            yield return null;
        }


    }

    void Update()
    {
        if (!navigation.on_hunt) 
        {
            RaycastHit hit;
            Vector3 dir = this.transform.forward;

            if (Physics.Raycast (gun.Mündung.position, dir, out hit, navigation.Sichtweite)) 
            {
                if (hit.transform.CompareTag ("Player") || hit.transform.CompareTag ("Humanoid")) 
                {
                    if (hit.transform.GetComponent <CharacterStats > ().egS.team.ToString () != set.team.ToString ()) 
                    {
                        zustand.zstd = Hogan1.Zustand.ZSTD.CHASE;
                        navigation.Ziel = hit.transform;
                        navigation.on_hunt = true;
                    } 

                } 

            }
        }
    }


    void Patrol()
    {
        navigation.agent.speed = waypoint_mngr.patrolSpeed;



        if (Vector3.Distance (this.transform .position , waypoint_mngr.waypoints [waypoint_mngr .WP_inx].transform .position ) >= 2) // zu weit
        {
            navigation.agent.SetDestination (waypoint_mngr .waypoints [waypoint_mngr .WP_inx ].transform .position );
        }
        else if  (Vector3.Distance (this.transform .position , waypoint_mngr.waypoints [waypoint_mngr .WP_inx].transform .position ) <= 2 ) // zu nah
        {
            waypoint_mngr.WP_inx += 1;
                if (waypoint_mngr.WP_inx > waypoint_mngr.waypoints.Length - 1) 
            {
                    waypoint_mngr.WP_inx = 0;
            }
        }

    }


    void Chase()
    {
        if (navigation.Ziel.GetComponent <CharacterStats> ().egS.health <= 0) 
        {

            Debug.Log ((Vector3.Distance (this.transform.position, waypoint_mngr.waypoints [waypoint_mngr.WP_inx].transform.position)));
            navigation.agent.SetDestination (waypoint_mngr .waypoints [waypoint_mngr .WP_inx ].transform .position );
            navigation.on_hunt = false;
            zustand.zstd = Hogan1.Zustand.ZSTD.PATROL;
            Patrol ();
            navigation.agent.speed = waypoint_mngr.patrolSpeed;
            return;
        } 
        else 
        {
            navigation.distance = Vector3.Distance (navigation.Ziel.position, this.transform.position);
            navigation.agent.stoppingDistance = navigation.Stop_at;
            navigation.agent.speed = navigation.movSPD;
            navigation.agent.SetDestination (navigation.Ziel.position);

        
            if (navigation.distance < navigation.Sichtweite && navigation.distance > navigation.agent.stoppingDistance)
    
            gun.timerB -= Time.deltaTime;
            if (gun.timerB <= 0) 
            {
                if (gun.Vorrat > 0)
                {
                    Feuer ();
                    gun.Vorrat--;
                }
                gun.timerB = gun.timer;
            }
        }
    }
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter
"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows" . Ich suche dafür noch Testspieler !
meine Grafiken "ohne Verwendungszweck"

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 186

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

12

17.11.2017, 21:44

:thumbsup: :dash: :thumbsup: :dash: :thumbsup:

also so manchmal wünschte ich, ich wär innerlich ausgeglichener... ich hab tatsächlich "nur" vergessen, an der richtigen Stelle einen Bool zurückzuschalten :golly: :dash: :D

Der "Panzerklein" fährt und folgt jetzt so, wie er soll

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
    void Chase()
    {
        if ((navigation.Ziel.GetComponent <CharacterStats> ().egS.health <= 0) || navigation .Ziel == null || gun.Vorrat ==0) 
        {
            navigation.on_hunt = false;
            navigation.Ziel = null;
            navigation.distance = Vector3.Distance (this.transform.position, waypoint_mngr.waypoints [waypoint_mngr.WP_inx].transform.position);
            zustand.zstd = Hogan1.Zustand.ZSTD.PATROL;
            navigation.agent.SetDestination (waypoint_mngr.waypoints [waypoint_mngr.WP_inx].transform .position );
        
        }
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter
"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows" . Ich suche dafür noch Testspieler !
meine Grafiken "ohne Verwendungszweck"

13

17.11.2017, 22:05

habe nun für einen nichtmenschlichen Bot eine KI geschrieben -

Gibt es auch menschliche bots? :D
Besucht mich und meinen Blog unter:
www.simple-world.org

Du magst Tower Defense?
Dann probier doch mal Coregrounds aus ;)

Martin Mundorf

Treue Seele

  • »Martin Mundorf« ist der Autor dieses Themas

Beiträge: 186

Wohnort: Waldorf, Kr. Ahrweiler

Beruf: Althistoriker

  • Private Nachricht senden

14

17.11.2017, 22:27

orrr jaa... das ist wie mit dem "wLan-Kabel" :D
...ich meinte damit: keine menschliche Figur, sondern eine Art "Roboter"_Figur ^^
"Eine Signatur ist das Buchstaben-Zahlen-Zettelchen unten an ein einem Buch in der Bibliothek!"



was ich zur Zeit ausprobiere: 3rd person Shooter
"Lehrjahre": Im Lande der Hasen
mein ewiges Spielprojekt "Straights & Rows" . Ich suche dafür noch Testspieler !
meine Grafiken "ohne Verwendungszweck"

Werbeanzeige