Thema: FreePascal Kollision Image Shape

Einzelnen Beitrag anzeigen

Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#1

Kollision Image Shape

  Alt 10. Apr 2017, 15:22
Delphi-Version: 5
Hey Leute,

kann mir jemand bei einer Kollisionsabfrage helfen? Es geht um folgendes: Ein Image bewegt sich per Pfeiltasten auf einer Form. Auf dieser Form finden sich aber noch mehrere Shapes, die als Hindernisse zu sehen sind. Wenn man das Image gegen eines dieser Shapes steuert, soll man sich nur noch von diesem Shape wegbewegen können. Ich habe mir bis jetzt folgende Gedanken gemacht:

Als erstes habe ich versucht, einfach eine Variable auf false zu setzen wenn entsprechende Koordinaten übereinstimmen und nur dann im KeyDown Event das Image bewegen zu können. Dann brauche ich aber ja für jedes Shape 4 Variablen, weil man ja wenn man bspw. von links in das Shape reinfährt, sich trotzdem noch nach oben, unten oder links bewegen können soll. Das muss ja eleganter gehen.

Dann habe ich versucht, in einem Timer die jeweilige Kollision abzufragen und mein Image bei Kollision automatisch wieder an den Rand des Shapes zu versetzen, doch ich konnte das Image trotzdem weiterhin durch die Shapes bewegen.

Ich suche also nach einer eleganten Version, ein Image nur dann mit den Pfeiltasten bewegen zu können, wenn es mit keinem der Shapes auf der Form kollidiert. Sollte es jedoch einmal kollidieren, sollte man das Image wieder zurückbewegen können. Damit das noch geschmeidigt aussieht, hab ich mir bisher als Kollisionszone sag ich mal immer einen 2 Pixel breiten Rand um das Shape gedacht. Bewegt man das Image da rein, ist die Bewegung in diese Richtung gesperrt.

Ich hoffe es findet sich hier jemand zurecht und die Zeit, mir bei meinem Problem behilflich zu sein.

LG
"One of the basic rules of the universe is that nothing is perfect. Perfection simply doesn't exist... Without imperfection, neither you nor I would exist." - Stephen Hawking
  Mit Zitat antworten Zitat