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

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Blitzkrieg Bop

Betreff: Neues Kollisionsabfrage-Problem!(siehe ganz unten im thread)

BeitragSa, Jun 05, 2004 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jun 05, 2004 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh mann. Addier einfach auch zu x und y der Rakete beim Erstellen Sin / Cos, ausserdem MidHandle das Schiff.
 

Blitzkrieg Bop

BeitragSa, Jun 05, 2004 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jun 05, 2004 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann mach eben statt *2 *10 oder so...
 

Blitzkrieg Bop

BeitragSa, Jun 05, 2004 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
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-BIT

Gast

BeitragSa, Jun 05, 2004 18:19
Antworten mit Zitat
Hoi !

Soll man dir vielleicht auch noch die Schnürsenkel binden ?

Toni
 

Blitzkrieg Bop

BeitragSa, Jun 05, 2004 18:36
Antworten mit Zitat
Benutzer-Profile anzeigen
@Hot-Bit:
Ich hab nur drauf gewartet!
Halt bitte die Fre**e okay?
...manche MEnschen sind unverbesserlich!
~ Hey Ho Let's Go ~

simi

BeitragSa, Jun 05, 2004 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jun 06, 2004 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Twisted Evil
~ Hey Ho Let's Go ~

Hubsi

BeitragMo, Jun 07, 2004 7:48
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jun 07, 2004 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ô_ô , was genau meinst du jetzt?
Doch nciht etwas das hier oder:
Code: [AUSKLAPPEN]

If leben <> 0
~ Hey Ho Let's Go ~
 

Blitzkrieg Bop

BeitragMo, Jun 07, 2004 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jun 08, 2004 9:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich meinte das so:
Code: [AUSKLAPPEN]
If Not g.gegner=Null Then tralala
Wink
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Blitzkrieg Bop

BeitragDi, Jun 08, 2004 14:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Einigen wir uns darauf: Es geht beides Laughing
Aber auf jedenfall DAnke!!
~ Hey Ho Let's Go ~

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group