AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Problem beim Bereich prüfen.
Thema durchsuchen
Ansicht
Themen-Optionen

Problem beim Bereich prüfen.

Ein Thema von Blackstyle94 · begonnen am 19. Aug 2011 · letzter Beitrag vom 20. Aug 2011
Antwort Antwort
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Problem beim Bereich prüfen.

  Alt 19. Aug 2011, 21:52
Hallo und herzlich willkommen!

Mir fällt da erst mal ein, die Bewegung um einen Schritt auszuführen.
Ansonsten müsstest Du vermutlich eine virtuelle Linie zur Zielposition berechnen und eine Kollision der Line mit dem Objekt prüfen...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Problem beim Bereich prüfen.

  Alt 19. Aug 2011, 23:45
Du kannst natürlich mathematisch prüfen:
getroffen := ((Bullet.Right >= Enemy.Left) and (Bullet.Right <= Enemy.Right)) or ((Bullet.Left <= Enemy.Right) and (Bullet.Left >= Enemy.Left)) or ((Bullet.Left <= Enemy.Left) and (Bullet.Right >= Enemy.Right)); (Die letzte Bedingung ist unnütz, wenn die Projektile stets schmaler sind als die Gegner.)
Okay, ist eher logisch geprüft, aber mathematisch motiviert. Nennt sich "AABB"-Test (Axis-Aligned-Bounding-Box Test).

Allerdings hast du dann noch immer ein Problem, wenn beide beteiligten kleiner als die Schrittweite sind (also in deinem Fall unter 15 Pixel), da dann Überspringen noch geht. Um das auch zu behandeln, bleibt wirklich nur noch der Ansatz mit linearer Algebra (Schnittpunktberechnung der Flugbahn des Projektils mit den Kanten des Gegners), was stahli auch nannte. Bei langsamen Projektilen - klingt bei dir so - sollte man zudem nicht auf Geradenschnitt, sondern bildweise auf Streckenschnitt prüfen. (Also normalisierten Richtungsvektor mit der Geschwindigkeit skalieren, und nach dessen Parameter auflösen. Ist der zwischen 0 und 1 gabs nen Schnitt im aktuellen Frame.)
Alles aber unnötig, wenn eben mindestens ein beteiligtes Kollisionselement in allen relevanten Richtungen größer als die Schrittweite ist, dann das simple AABB. (Vorausgesetzt, eine Begrenzung deiner Gegner anhand ihrer linken und rechten Grenzen ist ausreichend. Bei größeren/komplexeren kann das auch schon wieder zu grob sein, das ist Ermessenssache. Allerdings kommt man dann mit Bitmaps eh nicht mehr wirklich gut weiter, dann müsste alles in vektorieller Form vorliegen.)

Viel wichtiger: Wilkommen in der DP!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Tobinator

Registriert seit: 18. Mai 2008
Ort: Cottbus
53 Beiträge
 
#3

AW: Problem beim Bereich prüfen.

  Alt 19. Aug 2011, 23:48
Mit würde spontan einfallen, das mit hilfe eines Vektors zu berechnen.

Die Schusslinie ist dann ein Vektor und wenn der Gegner ein Element des Vektors ist (also der Spieler auf dem Vektor liegt), ist er getroffen.
Wenn ihr Vektoren in der Schule schon hattet und du ein bisschen fit in Mathe bist, sollte das nicht so kompliziert werden.

Ortsvektor(Spieler) + Entfernung(Spieler - Gegner) * Richtungsvektor(Schuss) = Ortsvektor(Gegner) ==> Treffer

so inetwa müsste das gehn

Viele Grüße

Tobi.
Tobias
  Mit Zitat antworten Zitat
Blackstyle94

Registriert seit: 19. Aug 2011
11 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Problem beim Bereich prüfen.

  Alt 20. Aug 2011, 10:03
Hay,

Also danke erstmal für die schnellen Antworten. Hätte nicht gedacht, dass über die Nacht so viele bzw. überhaupt eine Antort kommen würde .

Eure Antworten sagen mir leider nicht viel, da ich erst vor 2 Wochen angefangen habe. Mein Spiel selbst besteht daher auch nur aus simplen Befehlen. Aber ich werde mich ma ein bisschen schlau machen über die Punkte, die ihr geschrieben habt und dann mal ausprobieren. Sage euch dann Bescheid wenns klappt.


So Far
Blackstyle94
  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 13:51 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