Erstmal habe ich mir eine eigene Action Fass geschrieben
in der ich enable_impact aktiviere und my.event auf getroffen setze
// uses mass, linear_drag, angular_drag_x, angular_drag_y, angular_drag_z, health, shape_factor, collision_groupId, collision_sph_box, start_active, compound_collision, destructible, spawn_children;
action physic_fass
{
// collision type 0 = non-ball
var collisionType = 0;
// create a newton entity
var body;
body = NewtonAddMapEntity (my, collisionType);
NewtonSetBodyMass (body, my.mass);
NewtonSetBodyLinearDamp (body, my.linear_drag);
NewtonSetBodyAngularDamp (body, my.angular_drag_x, my.angular_drag_y, my.angular_drag_z);
NewtonSetBodyForceAndTorque (body, ApplyGravityForceEvent);
NewtonSetBodyMaterial (body, wood_material);
NewtonSetBodyActiveState (body, my.start_active);
// make me sensible for impact
my.enable_impact = on; // if player touches object
my.event = getroffen;
}
Die Funktion getroffen sieht so aus:
function getroffen
{
//set impact from missle
NewtonImpulseRecord[0] = your.x;
NewtonImpulseRecord[1] = your.y;
NewtonImpulseRecord[2] = your.z;
//Copy origin missle (use to determone the direction of the impulse)
NewtonImpulseRecord[3] = player.x * cos(camera.pan) * cos(camera.tilt);
NewtonImpulseRecord[4] = player.y * cos(camera.pan) * cos(camera.tilt);
NewtonImpulseRecord[5] = player.z - 190;
//Copy the missle mass
NewtonImpulseRecord[6] = 200;
//Copy the missle speed
NewtonImpulseRecord[7] = 100;
NewtonBodyAddImpulse( NewtonGetBody(me), NewtonImpulseRecord);
}
Es gibt aber noch 2 Fehler darin wo ich noch dabei bin sie zu lösen
Das erste ist das wenn man Rückwärts läuft in die Fässer hinneinlaufen kann was mich aber bei meinem neuen Spieler Script nicht stört da man nicht Rückwärtslaufen kann:).
Das zweite Problem ist das wenn das Fass verschoben wird und dabei ein anderes festes Objekt trifft kann man auch ins Fass hinneinlaufen.
Also wenn jemand ne Lösung für diese Probleme findet einfach posten.