So, ich habe einen kleinen Fortschritt gemacht: Das Dreieck ist jetzt einigermaßen stabil, nur die Textur ist ein bisschen zu klein. Also die anderen Physicalsprites kollidieren noch ausßerhalb der Textur (im Anhang ist ein Bild, mit dem man das besser zeigen kann. Die grünen Linien sind die Grenzen des Dreiecks, an denen die blauen Bälle kollidieren)
Der Quelltext sieht jetzt so aus:
Delphi-Quellcode:
procedure TPhysicalTriangleConstruct.CreateConstruct(
AData: TPhysicalConstructData);
var
Collision:PNewtonCollision;
Inertia:TAdVector3;
Mat1:TAdMatrix;
begin
if AData is TPhysicalSimpleData then
begin
with AData as TPhysicalSimpleData do
begin
Mat1 := AdMatrix_Rotation(0, 0 ,135 * Pi / 180);
Collision := NewtonCreateCone(Parent.NewtonWorld, Width, Height, @mat1[0,0]);
NewtonBody := NewtonCreateBody(Parent.NewtonWorld, Collision);
NewtonReleaseCollision(Parent.NewtonWorld, Collision);
with Inertia do
begin
x := Mass * (sqr(Height) + 10000) / 12;
y := Mass * (sqr(Width) + 10000) / 12;
z := Mass * (sqr(Width) + sqr(Height)) / 12;
NewtonBodySetMassMatrix(NewtonBody, Mass, x, y, z);
end;
NewtonBodySetForceAndTorqueCallback(NewtonBody, ForceAndTorqueCallback);
end;
end;
end;