"z.B. im Earthball sample."
Hat mir geholfen und funktioniert jetzt, danke. Nur scheint der you-Pointer nicht in der event-Funktion gesetzt zu werden, wenn (event_type == EVENT_FRICTION) gilt.
Das Problem wurde bereits im Mai von Uhrwerk angemerkt:
It would be nice if the you pointer was set to the entity the entity receiving EVENT_FRICTION collided with, respectively to NULL when a collision with level geometry occurs.
The you pointer is set in a friction event AFAIK, although this is not explicitly mentioned in the manual.
Ich kann, wie bereits gesagt, jedoch nicht bestätigen, dass der Pointer beim Auslösen des Events gesetzt wird (Entity-Entity-Kollision, per pXent_setcollisionflag(ent1,ent2,NX_NOTIFY_ON_TOUCH) gesetzt).
Um noch einmal auf das Manual zurückzukommen:
Unter dem Eintrag "PhysX Fragen" gibt es folgenden Punkt:
F: Wie kann ich die Bewegung auf zwei Dimensionen beschränken?
A: Sie können entweder zwei unsichtbare Hindernisebenen verwenden und so die Bewegungsmöglichkeit in der dritten Dimension vermeiden. Oder aber Sie messen die Position eines Objektes in der dritten Dimension und bringen proportional zur Ablenkung von der gewünschten Ebene eine kleine Kraft an.
Beim raschen Durchsehen der ackphysX.h ist mir folgendes Flag aufgefallen:
pXent_setbodyflag(entity,
NX_BF_FROZEN_POS_Y,1);
Da es bei mir sehr gut zu funktionieren scheint, wäre es meiner Meinung nach angebracht, diese einfache, aber versteckte Möglichkeit im Manual zu erwähnen.
EDIT: Setze ich im SED mittels [STRG]+[0..9] eine Marke, was um einiges komfortabler ist als die gewöhnlichen "Bookmarks", so werden diese leider beim Verlassen des Skriptes nicht gespeichert.