AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DelphiX+ Dxspriteengine1.Move(1) or TObjekt.DoMove
Thema durchsuchen
Ansicht
Themen-Optionen

DelphiX+ Dxspriteengine1.Move(1) or TObjekt.DoMove

Ein Thema von ISAS · begonnen am 1. Mär 2004
Antwort Antwort
Benutzerbild von ISAS
ISAS

Registriert seit: 24. Sep 2003
Ort: Vietnam
205 Beiträge
 
Delphi 4 Standard
 
#1

DelphiX+ Dxspriteengine1.Move(1) or TObjekt.DoMove

  Alt 1. Mär 2004, 17:46
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
Signatur wurde auf Wunsch geändert. Deswegen einfach hier drauf klicken-> www.geggi.at.gg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz