Towerdefense Problem
Übersicht

Ronon_DexBetreff: Towerdefense Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo liebe Community,
Ich habe vor ein kleines Towerdefense spiel zu erstellen, nur hänge ich da an einem Problem. Ich weis nicht, wie ich Türme so hinbekomme, dass sie auf die Feinde feuern die in einem bestimmten Radius an den Türmen vorbei laufen. Ich denke das ihr mir da helfen könnt ![]() mfg Ronon |
||
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Guten Tag Ronon
Naja mit Stift, Papier und Motivation ist da so einiges möglich ![]() Ich will dir trotzdem auf die Sprünge helfen. Hier eine Funktion, welche von 2 Koordinaten die Luftlinie(distanz) berechnet: BlitzBasic: [AUSKLAPPEN] Print get_distance(200,200,300,300) Mfg Ozzi |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Grundlagen der Trigonometrie: Satz des Pythagoras
dist = sqr(x²+y²) |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit dem http://de.wikipedia.org/wiki/Satz_des_Pythagoras kannst du den Abstand zwischen Feind und Turm berechnen, und wenn der Abstand zum Beispiel kleiner als 10 ist, einen Schuss abfeuern. In Blitz3D kannst du den abstand zwischen Meshes mittels EntityDistance![]() Ich hoffe, das hat dir jetzt geholfen |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Abstandsberechnung in einem zweidimensionalen Raum geht durch
Code: [AUSKLAPPEN] Distanz = Sqr((x1-x2)^2 + (y1-y2)^2)
(einfache Anwendung des Satzes des Pythagoras). Wie auch immer, am besten geht das durch Vektorrechnung. Ein Vektor ist eine Art Pfeil in der Mathematik, angegeben durch die x- und y-Abstand. In diesem Fall zeigt er vom Turm zum Feind. Das geht wie folgt: Code: [AUSKLAPPEN] VektorX = FeindX - TurmX
VektorY = FeindY - TurmY Distanz = Sqr(VektorX*VektorX + VektorY*VektorY) Hierdurch wird in der Distanzberechnung die Potenz weggelassen, was Rechenzeit spart. Diese kannst du einfach mit dem Turmradius vergleichen. Wenn du jetzt ein Geschoss vom Turm zum Feind fliegen lassen willst, musst du nur den Vektor addieren (also x = x + VektorX; y = y + VektorY). Dummerweise ist das Geschoss dann in einem Frame da, was sehr unübersichtlich ist. Deshalb muss man die Länge des Vektors verkürzen. Erstmal bringen wir sie auf eins, was die Mathematiker "normalisieren" nennen: Code: [AUSKLAPPEN] VektorX = VektorX / Distanz
VektorY = VektorY / Distanz Wenn wir ihn jetzt z.B. auf die Länge 3 bringen wollen, rechnen wir Code: [AUSKLAPPEN] VektorX = VektorX * 3
VektorY = VektorY * 3 Diesen Vektor wie oben angegeben immer zum Geschoss addieren und fertig. Es gab auch letztlich einen BCC zu diesem Thema... ZEVS |
||
Ronon_Dex |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen dank,
ich denke ich werde das Problem mit eurer Hilfe hinbekommen. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group