Neues Kollisionsabfrage-Problem!(siehe ganz unten im thread)
Übersicht

Blitzkrieg BopBetreff: Neues Kollisionsabfrage-Problem!(siehe ganz unten im thread) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Also, ich stelle ein Raumschiff auf dem Bildschirm da. Wenn man Space drückt, wird geschossen. Kein Problem. Doch das Objekt lässt sich auch um 360° drehen und der Schuss soll halt genau vorne vor dem Schiff herauskommen! Doch das darzustellen, damit hab ich ein wenig schwierigkeiten! So habe ich es im Mom dargesellt: Code: [AUSKLAPPEN] Function NeuerSchuss(s.spieler) srak.spieler_rakete = New spieler_rakete srak\x = s\x srak\y = s\y srak\winkel = s\winkel End Function Function JedeSpielerRakete() For srak.spieler_rakete = Each spieler_rakete srak\x = srak\x - Sin(-srak\winkel) * 8 srak\y = srak\y - Cos(-srak\winkel) * 8 DrawImage schuss01,srak\x,srak\y Next End Function Wenn ich das nehme, kommt der Schuss genau aus de rMitte des Schiffes heraus. Ich könnte ja schreiben: Code: [AUSKLAPPEN] srak\y = s\y-55 Aber wen man sich dann mit der Spitze nach links dreht, entsteht der Schuss über dem Schiff. Also, wie kann man so etwas besser darstellen, da gibt es sicher den einen oder andren Kniff! MFG |
||
~ Hey Ho Let's Go ~ |
- Zuletzt bearbeitet von Blitzkrieg Bop am So, Jun 06, 2004 22:25, insgesamt einmal bearbeitet
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh mann. Addier einfach auch zu x und y der Rakete beim Erstellen Sin / Cos, ausserdem MidHandle das Schiff. | ||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
MEinst du so: Code: [AUSKLAPPEN] Function NeuerSchuss(s.spieler) srak.spieler_rakete = New spieler_rakete srak\x = s\x - Sin(-srak\winkel) * 2 srak\y = s\y - Cos(-srak\winkel) * 2 srak\winkel = s\winkel End Function Function JedeSpielerRakete() For srak.spieler_rakete = Each spieler_rakete srak\x = srak\x - Sin(-srak\winkel) * 2 srak\y = srak\y - Cos(-srak\winkel) * 2 DrawImage schuss01,srak\x,srak\y Next End Function Das Schiff ist auch ge Midhandle't ! .. Ich versteh den Sinn dabei nicht! DAs klappt zwar gut, doch die Rakete startet ja nun immer noch mitten aus dem Schiff hinaus! |
||
~ Hey Ho Let's Go ~ |
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann mach eben statt *2 *10 oder so... | ||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, das ist shcon besser aber das Problem ist ja, das Schiff ist am Anfang mit der Spitze nach oben gerichtet. Die Spitze ragt weit hinaus. Wenn ich mich jetzt um 90° nach links drehe, wird der Schuss immer noch über dme Schiff angezeigt, weil die Höhe die jetzt zu sehen sit, kleiner ist als die vorherige Spitzenhöhe! | ||
~ Hey Ho Let's Go ~ |
HOT-BITGast |
![]() Antworten mit Zitat |
|
---|---|---|
Hoi !
Soll man dir vielleicht auch noch die Schnürsenkel binden ? Toni |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Hot-Bit:
Ich hab nur drauf gewartet! Halt bitte die Fre**e okay? ...manche MEnschen sind unverbesserlich! |
||
~ Hey Ho Let's Go ~ |
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
du musst zuerst ganz am anfang dem Raketenwinkel den Spielerwinkel zuordnen, sonst isses immer 0 Grad. Auch denke ich das dein Schiff nicht nur ein Image von 4x4 ist. du mustt also die hälfte der Hohe (bzw. der Breite) zur Position addieren: Zitat: Function NeuerSchuss(s.spieler) srak.spieler_rakete = New spieler_rakete srak\winkel = s\winkel srak\x = s\x + Sin(srak\winkel) * SchiffBreite/2 srak\y = s\y + Cos(srak\winkel) * SchiffHohe/2 End Function cu simi |
||
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hm , ok! das hab ich ... nun folgendes Problem:
EIn Gegner hat 5 LEben! Wenn ich nun so doll auf meine leertaste dresche, das 6 Rakete gemalt werden, werden bei kollision mit dem Gegner 5 Raketen gelöscht, und schließlich der Gegner auch! Doch weil ja die 6 Rakete noch auf dem Bildschirm ist, kommt der Fehler Objekt does not exist, wobei der Gegner mit objekt gemeint ist...wie krieg ich das hin? So habe ich das bis jetzt: Code: [AUSKLAPPEN] For g.gegner = Each gegner For srak.spieler_rakete = Each spieler_rakete If RectsOverlap(srak\x,srak\y,ImageWidth(schuss01),ImageHeight(schuss01),g\x,g\y,50,50) leben = leben - 1 Delete srak.spieler_rakete ;Exit EndIf If leben <= 0 geg_end_animation = True Delete g.gegner EndIf Next Next Auch wenn ich Exit hineinkommentiere, geht es nciht besser...Ich mach doch sicher wieder nen bekloppten denkfehler ![]() |
||
~ Hey Ho Let's Go ~ |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Prüfe ob der Gegner ungleich Null (nicht 0, wirklich Null!) ist und erst dann auf Kolli. | ||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ô_ô , was genau meinst du jetzt?
Doch nciht etwas das hier oder: Code: [AUSKLAPPEN] If leben <> 0 |
||
~ Hey Ho Let's Go ~ |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
OK, habs selsbt gelöst! Hier die Lösung:
Code: [AUSKLAPPEN] For g.gegner = Each gegner For srak.spieler_rakete = Each spieler_rakete If RectsOverlap(srak\x,srak\y,ImageWidth(schuss01),ImageHeight(schuss01),g\x,g\y,50,50) leben = leben - 1 Delete srak.spieler_rakete EndIf Next Next For g.gegner = Each gegner If leben < 0 geg_end_animation = True Delete g.gegner EndIf Next Aber trotzdem danke !!! |
||
~ Hey Ho Let's Go ~ |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich meinte das so:
Code: [AUSKLAPPEN] If Not g.gegner=Null Then tralala ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Blitzkrieg Bop |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Einigen wir uns darauf: Es geht beides ![]() Aber auf jedenfall DAnke!! |
||
~ Hey Ho Let's Go ~ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group