Checkpoints - wie?

Posted By: garv3

Checkpoints - wie? - 03/02/08 22:36

Hallo,

ich habe ein Problem. Ich möchte einen Checkpoint für ein Rennspiel erstellen. Dazu stelle ich eine Entity in Form einer Wand auf. Diese wird dann auf invisible gesetzt.

So, jetzt muss man noch hindurch fahren können. Dazu gibt es zwei Möglichkeiten.
1. Indem ich den push Value des Fahrzeus größer setze, als den des Checkpoint.
2. Indem ich sie auf passable setze.

Doch daraus ergeben sich einige probleme:
zu 1. Da ich die Physik-Engine zur Bewegung des Fahrzeugs benutze, funktioniert der push Value schlicht und ergreifend nicht. Man fährt immer gegen die Mauer.
zu 2. Wenn die "Wand" passable ist, werden keine Events ausgelöst und ich kann nicht feststellen, wann das Fahrzeug den Checkpoint erreicht.

Da ich auch Flugzeuge verwenden will, ist ein Tracing mehr oder weniger undenkbar.

Hat jemand eine Idee dazu?
Ich würde mich wirklich freuen. Hänge schon länger an dieser Stelle fest!

Dank und Gruß
garv3
Posted By: broozar

Re: Checkpoints - wie? - 03/03/08 00:00

2 positionen (checkpoint und renner), vec_diff, und ab nem bestimmten wert gilt der checkpoint als passiert.
Posted By: garv3

Re: Checkpoints - wie? - 03/03/08 00:31

ja, das ist theoretisch machbar. doch dann ist ein fahrzeug in der mitte der strecke früher im checkpoint, als eines am rand der strecke!

ist also auch keine lösung
Posted By: broozar

Re: Checkpoints - wie? - 03/03/08 10:50

hm, wie wärs mit: (alpha)unsichtbares flaches bodenmodell, trace nach unten vom renner mit zB scan_texture, und dann bei einer bestimmten textur den checkpointzähler eins hochsetzen. brauchst dementsprechend viele texturen.
Posted By: garv3

Re: Checkpoints - wie? - 03/03/08 11:52

Hmm. Die Idee ist nicht schlecht. Werde es zwar etwas anders machen, aber dein Vorschlag hat mir nen schönen Denkanstoss gegeben!

Danke!
Posted By: Rasterbar

Re: Checkpoints - wie? - 03/03/08 12:22

hi, wie wärs mit einer rechteck überprüfung ?
nimm ein flaches model mit 4 vertisen, hole dir mit vec_for_vertex die linke obere xy position und die rechte untere xy position und prüfe ob dein model sich mit seinem nullpunkt inerhalb des rechteckes befindet
das model für die xy positionen darf nicht gedreht werden

hier ist ein ähnliches beispiel:
Code:
var temp1[2];
var tor_count;
var tor_daten[40]; // 10 Tore a 4 Koordinaten
var count;
...

count = tor_count * 4;
temp.x = tor_daten[count]; // linke obere ecke
temp.y = tor_daten[count+1];
temp1.x = tor_daten[count+2]; // rechte untere ecke
temp1.y = tor_daten[count+3];

if ((temp1.x < my.x) && (temp1.y < my.y)) && ((temp.x > my.x) && (temp.y > my.y))
{
tor_count += 1; // index auf nächstes tor
...
}
...


Posted By: broozar

Re: Checkpoints - wie? - 03/03/08 13:30

Quote:

und prüfe ob dein model sich mit seinem nullpunkt inerhalb des rechteckes befindet




das ist das problem: es müsste also eine "==" -Überprüfung geben, und die klappt erfahrungsgemäß nur bedingt.
Posted By: Rasterbar

Re: Checkpoints - wie? - 03/03/08 17:27

die frage ist was man mit '==' in diesem fall anfagen kann ?

nehmen wir eine grafik 512x512 oben links ist x0, y0 unten rechts ist x511, y511
mit '==' müßte man jeden der 512x512 pixel prüfen ob man innerhalb der grafik ist also auf irgendeinem pixel, sehe ich richtig ?

wenn ich jetzt mit '> und <' prüfe braucht man nur größer x -1, y -1 und kleiner x512, y512 und dann weis man ob man innerhalb der grafik ist

die ansicht ist immer die draufsicht
Posted By: garv3

Re: Checkpoints - wie? - 03/03/08 23:39

Quote:

das model für die xy positionen darf nicht gedreht werden




Das ist das Problem... Die Checkpoints sollen ja nicht immer parallel zur X- oder Y-Achse sein!

Aber ich mache es über eine unsichtbare Entity in der Luft, die von den Fahrzeugen getraced wird... Das wird reichen *g*
Posted By: broozar

Re: Checkpoints - wie? - 03/04/08 23:53

darf man fragen, wonach du tracet? nach textur, farbwert, oder einfac nur das vorhandensein?
Posted By: garv3

Re: Checkpoints - wie? - 03/04/08 23:57

ich würde nur nach dem vorhandensein tracen und dann per event der entity den checkpoint des fahrzeugs hochzählen.
© 2024 lite-C Forums