ich versuche gerade eine mini Physics engine zu schreiben und hau hier mal wieder was mit den Klassen durcheinander. Ich brauche eine Klasse, mit der ich Objekten in der Scene als Entity beschreibe. Dafür habe ich folgende Klasse aufgestellt:
Code: Alles auswählen
type TEntity = class
private
APosition:TVector3f;
V:TVector3f;
a:TVector3f;
m:Real;
function vec3(x,y,z:Real):TVector3f;
public
property Position:TVector3f read APosition write Aposition;
procedure applyForce(Force:TVector3f);
procedure applyForce(x,y,z:Real);
procedure Update;
constructor Create(x,y,z:Real);
end;
Jetzt kann ein Entity eine Kraft erfahren. Das würde man mit applyForce machen. Die Update funktion berechnet dann die aktuelle Geschwindigkeit und soll sie zur Position des Objekts addieren. So viel zum Grundprinzip.
Um jetzt die bzw die neuen Positionsdaten an die Lookat zu geben, die den Spieler verschieben würde, muss ich auf APosition zugreifen können. Das Problem ist, dass bei jedem versuch auf APosition oder auf bzw Player.Positon eine Fehlermeldung kommt:
Exception-Klasse "External:SIGSEGV"
Das heißt ja, dass hier kein Wert in der benutzen Variable vorliegt (so weit wie ich es verstanden habe).
Der Fehler kommt auch wenn ich versuche in der applyForce a (acceleration) und V(velocity) zu verändern.
Ich bin mir sicher dass ich hier einen Anfängerfehler in der Klassenstruktur gemacht haben muss. Kann mir jemand erklären was ich falsch gemacht habe?