Wer meine Threads gelesen hat, weiss schon, dass es sich hier wieder um ein Rollenspiel-Problem handelt.
Man muss aber nicht die vorherigen kennen, um das jetztige Problem lösen zu können.
Hab nun alles hinbekommen, was nichts mit der Maus zu tun hat: Also Gegner und Bewegung (Spieler im Mittelpunkt, Umgenung bewegt sich).
Ich habe eigentlich nicht ein Problem sondern Fragen zu Dxspriteengine1.Move(1) und TObjekt.DoMove.
TPlayer und TGegner sind beide von der Spriteengine1 (Dxspriteengine1). Nun will ich aber eine unterschiedlich
schnelle Bewegung. Das sich zB. TPlayer alle 0.4 sec bewegt und TGegner alle 0.6 sec bewegt.
Ich muss noch hinzufügen, dass die DoMove prozedure des Gegners sowohl die Geschwindigkeit des Spielers (0.4) als auch die Geschwindigkeit 0.6 beinhaltet. Damit dies verschtändlicher wird, habe ich hier ein Beispiel:
Delphi-Quellcode:
Procedure TGegner.DoMove(MoveCount: Integer);
Begin
Inherited domove(movecount);
If isup in form1.dxinput1.states Then y:=y+32;
If isleft in form1.dxinput1.states Then x:=x+32;
If isdown in form1.dxinput1.states Then y:=y-32;
If isright in form1.dxinput1.states Then x:=x-32; //Wären die 0.4 sec. Es bewegt sich ja nicht der Player,
//sondern alles um ihn herum. Das ist die Bewegung, wenn sich
//der Player bewegt.
If (X>-1) and (X<416) then begin //Beginn der Bewegung des Gegners. dieser Bewegt sich alle 0.6 sec
If (Y>-1) and (Y<288) then begin
...
collision;
end;
Mein Problem ist mit einem Timer gelöst worden, mit folgendem inhalt:
Dxspriteengine1.Move(1);
Aber das funktioniert natürlich nicht besonders, da ich die Geschwindigkeit des Gegners nicht gut regulieren kann
und der Gegner kann nie schneller als der Spieler sein und noch viele weitere Probleme.
PS: Wichtig ist, dass sich der Gegner auch schneller bewegen kann, wie der Spieler.
PPS: Die DoMove procedure muss natürlich nicht gleich bleiben. Kann total verändert werden, solange es eine Lösung gibt