Seite 1 von 1

WallBounce [q3-geoball]

Verfasst: 24.09.2007, 06:49
von Landix
Huhu,

ich bräucht ein wenig code, da meine coder irgendwie alle
ausgeflogen sind, (Bis auf den Physicscoder).

Ich möchte das der Ball nicht nur vom Boden abprallt sondern auch von den
Wänden. Für deb Boden benutze ich folgenden code in "Crashland"
von bg_pmove.c:

Code: Alles auswählen

	pm->ps->velocity[2] = -vel * 0.5; //2
	if (pm->ps->velocity[2] <= 0.001) {
    pm->ps->velocity[2] = 0;
}
Ich habe schon erfahren da der coder aus:g_missle.c hilft:

Code: Alles auswählen

/*
================
G_BounceMissile

================
*/
void G_BounceMissile( gentity_t *ent, trace_t *trace ) {
        vec3_t	velocity;
        float	dot;
        int		hitTime;

        // reflect the velocity on the trace plane
	hitTime = level.previousTime + ( level.time - level.previousTime ) * trace->fraction;
        BG_EvaluateTrajectoryDelta( &ent->s.pos, hitTime, velocity );
        dot = DotProduct( velocity, trace->plane.normal );
        VectorMA( velocity, -2*dot, trace->plane.normal, ent->s.pos.trDelta );

        if ( ent->s.eFlags & EF_BOUNCE_HALF ) {
                VectorScale( ent->s.pos.trDelta, 0.65, ent->s.pos.trDelta );
                // check for stop
		if ( trace->plane.normal[2] > 0.2 && VectorLength( ent->s.pos.trDelta ) < 40 ) {
                        G_SetOrigin( ent, trace->endpos );
                        //newq3ball
			ent->parent->istelepoint = 1;
                 VectorCopy(ent->r.currentOrigin, ent->parent->teleloc);
                        ent->parent->teleloc[2] += 6;
                        //endnew	
			return;
                }
        }

        VectorAdd( ent->r.currentOrigin, trace->plane.normal, ent->r.currentOrigin);
        VectorCopy( ent->r.currentOrigin, ent->s.pos.trBase );
        ent->s.pos.trTime = level.time;
}
Aber wie muss ich den code einfügen in bg_pmove.c damit der
Ball von der Wand abprallt!?

Ich bräuchte den code, weil selber coden kann ich nicht.
Danke danke