Hallo,
ich habe ein Problem bei der Programmierung meines neuen Spiels.
Erstmal das Grundlegende:
Es geht unter anderem darum, eine Kugel zu steuern, und dabei Hindernissen auszuweichen, Punkte und Extras einzusammeln, andere Kugeln aus der Bahn zu rammen, usw.... Die Geschwindigkeit ist festgelegt, nur die Richtung ist beeinflussbar. Dabei soll es auch "Bots" geben, (z.B. für den Deathmatch-Modus).
Diese sollen wie folgt reagieren:
Die speed ist festgelegt, pro Step kann die direction um +4/-4 geändert werden.
Bisher sieht meine Programmierung der KI so aus:
Step-Event:
1. Hindernis=0
2. Der Bot kontrolliert ob etwas im Weg ist, in der Richtung, in die er sich gerade bewegt, und zwar mit 200 pts im vorraus:
PunktX=x+cos(direction)*200
PunktY=y+sin(direction)*200
if(collision_line(x,y,PunktX,PunktY,Hindernis,true,true)>0){Hindernis=1}
3. Richtungsänderung wenn was im Weg ist
if(Hindernis=1){...}
Also die Richtungsänderung klappt, bloss folgendes Problem:
Der Bot erkennt das erste Hindernis, weicht auch aus, aber danach spinnt die Hinderniskontrolle (Schritt 2).
Ich hab die Kollisionslinie mal zeichnen lassen, und nach dem ersten Hindernis zeigt die Linie nicht mehr in die Richtung der Bewegung sondern irgendwo sonst hin!
Ich versteh das nicht, eigentlich müsste mit meiner kleinen Formel oben doch alles glattgehen, also die Kollisionslinie immer in direction zeigen, oder nicht?
Schonmal im vorraus danke für jede Hilfe
Casi82
ich habe ein Problem bei der Programmierung meines neuen Spiels.
Erstmal das Grundlegende:
Es geht unter anderem darum, eine Kugel zu steuern, und dabei Hindernissen auszuweichen, Punkte und Extras einzusammeln, andere Kugeln aus der Bahn zu rammen, usw.... Die Geschwindigkeit ist festgelegt, nur die Richtung ist beeinflussbar. Dabei soll es auch "Bots" geben, (z.B. für den Deathmatch-Modus).
Diese sollen wie folgt reagieren:
Die speed ist festgelegt, pro Step kann die direction um +4/-4 geändert werden.
Bisher sieht meine Programmierung der KI so aus:
Step-Event:
1. Hindernis=0
2. Der Bot kontrolliert ob etwas im Weg ist, in der Richtung, in die er sich gerade bewegt, und zwar mit 200 pts im vorraus:
PunktX=x+cos(direction)*200
PunktY=y+sin(direction)*200
if(collision_line(x,y,PunktX,PunktY,Hindernis,true,true)>0){Hindernis=1}
3. Richtungsänderung wenn was im Weg ist
if(Hindernis=1){...}
Also die Richtungsänderung klappt, bloss folgendes Problem:
Der Bot erkennt das erste Hindernis, weicht auch aus, aber danach spinnt die Hinderniskontrolle (Schritt 2).
Ich hab die Kollisionslinie mal zeichnen lassen, und nach dem ersten Hindernis zeigt die Linie nicht mehr in die Richtung der Bewegung sondern irgendwo sonst hin!

Ich versteh das nicht, eigentlich müsste mit meiner kleinen Formel oben doch alles glattgehen, also die Kollisionslinie immer in direction zeigen, oder nicht?
Schonmal im vorraus danke für jede Hilfe

Casi82