.| Autor | Beitrag |
|---|---|
|
000 06.01.2001, 19:35 gropi |
hi ! ich habe mit hilfe von rockefellers tut ein vehicle-entity programmiert. jetzt bin ich dabei eine kollisionsabfrage zu erstellen. das habe ich mir irgendwie so gedacht : void CFuncVehicle::FrontCheck( void)
Das Problem ist jetzt aber, dass wenn man gegen die Wan gefahren ist, man bei jeder Bewegung wieder gestoppt wird mit der Meldung Achtung Wand. Nach einer Zeit hin und hergehakel ist man dann wieder aus der Wand raus, aber das ist auf die Dauer glaub ich zu nervig. Wie kann man das am besten bewerkstelligen ?
|
|
Profil || Suche |
|
001 06.01.2001, 21:06 Another1 |
tu einfach SET_Origin, ein wenig elegant nach hinten =) Und spiegel den speed (pev->velocity) an der wand, wennde nit weißt wie, spiegel die velocity einfach: (-)!
Another1 ...relaxing..atm =) |
|
Profil || Suche |
|
002 06.01.2001, 21:24 apfelkorn |
ich schreib mal auf, wie ich das ganze gemacht habe:
Das ganze Stück code schiesst vier Tracelines: Vorne Rechts nach vorne, Vorne Links nach vorne, Hinten Rechts nach hinten und Hinten Links nach hinten. Ich habe das ganze mit vieren gemacht, damit man am ende auch möglicherweise, wenn einer der auftriffswinkel zu flach ist, dass das Fahrzeug einfach gedreht wird. Die Tracelines sind bei mir 32 Units lang, aber du kannst sie natürlich noch ändern... ich habe das ganze im moment nur zu Debug-Zwecken so lang. Du kannst aber trotzdem noch beim fahren bei einer Drehung seitlich in ein Wand rein. Dann musst du noch seitliche Kollisionsabfragen machen und dann statt der velocity die y-winkel ändern -- |
|
Profil || Suche |
|
003 07.01.2001, 00:11 gropi |
also ich habs jetzt so probiert : void CFuncVehicle::FrontCheck ( void )
Vector angles;
FixupAngles( angles ); UTIL_MakeVectors( angles ); // Calculating Source-Vectors
vecSrcRightFront = pev->origin + (gpGlobals->v_forward * (m_length/2)) + (gpGlobals->v_right * (m_width/2));
// Calculating End-Vectors
vecEndRightFront = pev->origin + (gpGlobals->v_forward * (m_length/2 +1)) + (gpGlobals->v_right * (m_length/2 +32));
// lets shoot some TraceLines
UTIL_TraceLine( vecSrcRightFront, vecEndRightFront, ignore_monsters, ENT( pev ), &tr5);
if (tr1.flFraction < 1.0 || tr2.flFraction < 1.0 || tr3.flFraction < 1.0 || tr4.flFraction < 1.0 || tr5.flFraction < 1.0 || tr6.flFraction < 1.0 || tr7.flFraction < 1.0 || tr8.flFraction < 1.0)
if ( pHit1->IsBSPModel() || pHit2->IsBSPModel() || pHit3->IsBSPModel() || pHit4->IsBSPModel() )
ALERT( at_console, "tr1 : %f \n", (tr1.flFraction*8192) );
ALERT( at_console, "RechtsVorne : %f \n", (tr5.flFraction*8192) );
aber irgendwie funktioniert das auch noch nicht so. ist das mit den vektoren so richtig ? also das zeug mit vecEndRightFront = pev->origin... -- |
|
Profil || Suche |
|
004 07.01.2001, 09:15 apfelkorn |
du musst dran denken, dass ich bei mir noch drei zusätzliche Variablen habe: m_height, m_width und m_length (m_height ist nicht die "Height above track"-Variable - die habe ich umbenannt - nein, das sind alles Variablen, die ich neu eingeführt habe für WC (WorldCraft) Wenn ich meins fertig habe, sage ich bescheid, aber ich muss erstmal sehen, dass ich mein auf Rampen fahren und wieder runterkommen fertig bekomme... -- |
|
Profil || Suche |

