![]() |
DelphiX -> MouseMove und DoCollision
Habs nun geschafft, dass man jedes TPushable verschieben kann :-D . Schick mal den Quellcode (wie ich das meine) und dann erläutere ich ein bisschen.
Delphi-Quellcode:
Maus ist ein Srite mit den richtigen Mauskoordinaten.
procedure TPushable.DoCollision(Sprite: TSprite; var Done: Boolean);
begin if klick = true then begin if sprite = maus then begin repeat procedure TForm1.DXDraw1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); X:=round(Maus.X / 32)*32; Y:=round(Maus.Y / 32)*32; procedure TForm1.DXDraw1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); until klick=false; end; end; end; Also, wenn man auf ein Sprite klickt, dann soll er zu repeat gehen. In diesem soll man die Position vom Sprite sollange verändern können(MouseMove), bis man MouseUp macht (denn da wird klick zu false). Das wäre es eigentlich schon. PS: Wenn jemand eine andere Idee hat, wie man TPushable(Besteht aus mehreren Sprites mit verschiedenen Koordinaten) so machen kann, wie ich geschildert habe, dann immer her damit. :arrow: PPS: Ein Problem gibs da noch. Wenn 2 Sprites dieselben Koordinaten haben, würde er dann beide nehmen und diese wären nicht mehr zu trennen. Lösungsvorschläge? :?: PPPS: Danke, ISAS! :thuimb: |
Re: DelphiX -> MouseMove und DoCollision
Hab das so gelöst: :thuimb:
Delphi-Quellcode:
Sieht kompliziert aus :shock: , is es aber nicht :roll: .
if klick = true then begin
if sprite = maus then begin if down=true then begin repeat X:=mouse.CursorPos.X-Form1.left-5; Y:=mouse.CursorPos.Y-Form1.top-25; until GetAsyncKeyState(VK_LBUTTON) = 0; down:=false; X:=trunc(X/32) * 32; Y:=trunc(Y/32) * 32; end; end; end; end; end; end; |
Re: DelphiX -> MouseMove und DoCollision
Hab das so gelöst: :thuimb:
Delphi-Quellcode:
Sieht kompliziert aus :shock: , is es aber nicht :roll: .
if klick = true then begin
if sprite = maus then begin if down=true then begin repeat X:=mouse.CursorPos.X-Form1.left-5; Y:=mouse.CursorPos.Y-Form1.top-25; until GetAsyncKeyState(VK_LBUTTON) = 0; down:=false; X:=trunc(X/32) * 32; Y:=trunc(Y/32) * 32; end; end; end; end; end; end; //[edit] Wieso hat der das 2mal gepostet?? Komisch //[edit2] Mein Rollenspiel schreitet voran. Hab nun: Leveleditor, Level laden, Gehen, Collision, Gegner (Leider noch kein besonders gutes Gehen ( hier gibts ein thread, wie ich die KI der Gegner mache, damit die nirgends hängen bleiben. Meins is nämlich noch simplest) und Sachen verschieben. Übermorgen hab ich E-Schularbeit, dass heisst, morgen Pause und übermorgen werden einige neue Sachen gemacht. Vorallem mal Sachen herumschieben, Waffen und Gegner attacken. Also, dass wars. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz