Ich habe seitdem ich auf lite-c und dem neuen Kollisionssystem (OBB) gewechselt bin ein problem mit c_move.
Das Problem tritt auf, wenn mein Player mit c_move bewegt wird und mit einer andere Entity kollidiert. Wenn ich dann den Player weiter in Richtung der Entity laufen lasse, dann ruckelt die Bewegung des Players (dauernd weg von der Entity und wieder hin). Je nachdem wie hoch die Laufgeschwindigkeit des Players ist, desto heftiger ruckelt die Bewegung.
komischerweise kommt es bei mir nicht nur mit meinem eigenen movement Code vor, sondern auch mit dem aus dem Manual oder weiteren die ich hier im Forum gefunden und ausprobiert habe.
Daher nehme ich nun an, dass es entweder ein generelles Problem sein muss oder ich einfach nur was (ausserhalb meiner movement Funktion) falsch mache bzw. nicht weiss.

Meine Init Funktion für Engine Variablen:
Code:
function myInit()
{
  d3d_triplebuffer = ON;
  pos_resolution = 0;
  move_friction = 0.25;
  move_min_z = -1;
  disable_z_glide = 0;
  enable_polycollision = 2;
  fps_max = 60;
  fps_min = 16;				
  fps_lock = ON;
}


Mein Movement Code für den Player:
Code:
#define WORLD_GRAVITY 30
VECTOR* eb_vec_relSpeed = {x=0; y=0; z=0;}
VECTOR* eb_vec_absSpeed = {x=0; y=0; z=0;}
VECTOR* eb_vec_absforce = {x=0; y=0; z=0;}

function myPlayer()
{
  my._speed = 10;
  wait(1);
  c_setminmax(me);
  reset(my, SHADOW | POLYGON | PASSABLE | TRANSLUCENT);
  my.flags2 |= UNTOUCHABLE;
  while(1)
  {
    my._force_x = my._speed * maxv(minv(key_w-key_s, 1), -1);
    my._force_y = -my._speed * maxv(minv(key_d-key_a, 1), -1);
    my._force_pan -= 10 * mouse_force.x * time_step;

    // Player Drehen...
    c_rotate(me, vector(my._force_pan,0,0), IGNORE_PASSABLE | IGNORE_PUSH);

    // Player Bewegen...
    vec_set(eb_vec_relSpeed, vector(0,0,0));
    vec_set(eb_vec_absSpeed, vector(0,0,0));
    if (my._height > 3) // In der Luft
    {
      my._friction = 0.05;
      my._force_x *= 0.2;
      my._force_y *= 0.2;
      accelerate(eb_vec_absforce.z, -WORLD_GRAVITY*3, 0);
      eb_vec_absforce.x = 0;
      eb_vec_absforce.y = 0;
    }
    else // Auf dem Boden
    {
      my._friction = 0.7;
      vec_set(eb_vec_absforce.x, vector(0,0,0));
    }

    vec_accelerate(eb_vec_relSpeed.x, my._speed_x, vector(my._force_x * time_step, my._force_y * time_step, 0), my._friction);

    eb_vec_absSpeed.x = eb_vec_absforce.x * time_step;
    eb_vec_absSpeed.y = eb_vec_absforce.y * time_step;
    eb_vec_absSpeed.z = accelerate(my._speed_z, eb_vec_absforce.z * time_step, my._friction);

    if (my._height < 3) {eb_vec_absSpeed.z = -maxv(my._height-1, -10);}
    c_move(me, nullvector, eb_vec_absSpeed.x, IGNORE_PASSABLE | IGNORE_PUSH);
    c_move(me, eb_vec_relSpeed.x, nullvector, IGNORE_PASSABLE | IGNORE_PUSH | GLIDE);

    // Kamera bewegen...
    myCamera();
    wait(1);
  }
}


Ich habe die Movement Funktion aus mehreren Funktionen zusammen kopiert und hoffe nichts vergessen zu haben.
Wie gesagt denke ich nicht das es direkt an dieser Funktion liegen mag, da es mit anderen Funktionen auch ruckelt.
Die gleiche Funktion (nur mit älteren Befehlen) hatte in älteren 3DGS Versionen (AABB Kollision) noch einwandfrei funktioniert.

Zunächst würde mich mal interessieren ob nur ich das Problem habe oder es bei anderen auch auftaucht?

Da ich das Problem nun einige Zeit mit meinem Projekt rumschleppe und schon mir alles Erdenkliche ausprobiert habe, suche ich nun nach Rat in der Community.

Mein Player Modell ist übrigens im WED Editor 4 kleine Kästchen groß und auf 1.000 skaliert.
Bei Kollision mit Levelgeometrie kommt keine ruckelnde Bewegung des Players vor.
Das Level wurde aus einem FBX Model in WED importiert und mit "Build BSP MAP" und "Create Meshes" erstellt.

Last edited by HPW; 11/16/08 02:52.

Evil Blood (v. 0.52) RPG
Commport.de (Social Network Community)