variablenaustausch bei kollisionen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Raoudi

Betreff: variablenaustausch bei kollisionen

BeitragSa, Feb 05, 2005 14:14
Antworten mit Zitat
Benutzer-Profile anzeigen
hab da 2 types (dummy und schuss)

Code: [AUSKLAPPEN]
;dummy--------------------------------
For d.dummy = Each dummy
TranslateEntity d\mesh,0,-d\grav#,0
d\grav# = d\grav#+d\gravity#

If d\health <= 0
FreeEntity d\mesh
Delete d
End If
Next


bei jeder kollision mit s\sprite (dem schuss) sollte sowas passieren
Code: [AUSKLAPPEN]
d\health = d\health-s\dmg


wie mach ichs : /?

Jolinah

BeitragSa, Feb 05, 2005 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil ich grad nichts besseres zu tun hatte: Wink

Code: [AUSKLAPPEN]

Type dummy
Field mesh
Field health
End Type

Type schuss
Field sprite
Field dmg
End Type

; Kollisionsarten
Const DUMMY_TYP = 1
Const SCHUSS_TYP = 2

; Neue dummy Instanz
d.dummy = New dummy
d\mesh = CreateCube()
d\health = 100
; Für das mesh festlegen von welcher Kollisionsart es ist.
EntityType d\mesh, DUMMY_TYP


; Neue schuss Instanz
s.schuss = New schuss
s\sprite = CreateCube()
s\dmg = 10
; Für das schuss sprite festlegen von welcher Kollisionsart es ist.
EntityType s\sprite, SCHUSS_TYP


; Kollision zwischen Schuss und Dummy Kollisionsart festlegen
; Alle Entities die diesen beiden Typen zugeordnet wurden, werden also
; während des Spiels überprüft.
Collisions SCHUSS_TYP, DUMMY_TYP, 2, 2



; Alle schüsse durchgehen
For s.schuss = Each schuss

   ; Kollidierendes Objekt
   col = EntityCollided(s\sprite, DUMMY_TYP)
      
   ; Wenn es eine Kollision gibt..
   If Not col = Null
   
     ; Alle dummies durchgehen..
     For d.dummy = Each dummy
      ; ..und schauen zu welcher Typeinstanz das Kollidierende Objekt gehört.
      If d\mesh = col
        ; Dann von dieser den Schaden bei Health abziehen
        d\health = d\health - s\dmg
      EndIf
     Next

   EndIf


Next
 

Raoudi

BeitragSa, Feb 05, 2005 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
   ; Wenn es eine Kollision gibt..
   If Not col = Null


da sagt er "illegal type conversion" ._.

Jolinah

BeitragSa, Feb 05, 2005 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab das alles von Hand geschrieben.. das ganze liefert ein Handle zurück und kein mesh Objekt oder so ^^

Das heisst du musst auf not = 0 prüfen statt null, sorry Wink
 

Raoudi

BeitragSa, Feb 05, 2005 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
funzt irgendwie ned ;_;

Jolinah

BeitragSo, Feb 06, 2005 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Also es müsste heissen:

Code: [AUSKLAPPEN]
If not col = 0 then



Der Code den ich geschrieben habe ist auch nicht komplett. Das sollten nur die wichtigsten Teile sein, das mit dem Schüsse durchgehen sollte in deine Hauptschleife irgendwo. Das andere müsstest du an deinen Code anpassen, also da wo du neue Schüsse und dummies machst musst du ihnen einen Kollisionstyp zuweisen nach dem Erstellen, mit EntityType entity, typ.
 

Raoudi

BeitragDo, Feb 10, 2005 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Jolinah hat Folgendes geschrieben:
Also es müsste heissen:

Code: [AUSKLAPPEN]
If not col = 0 then



Der Code den ich geschrieben habe ist auch nicht komplett. Das sollten nur die wichtigsten Teile sein, das mit dem Schüsse durchgehen sollte in deine Hauptschleife irgendwo. Das andere müsstest du an deinen Code anpassen, also da wo du neue Schüsse und dummies machst musst du ihnen einen Kollisionstyp zuweisen nach dem Erstellen, mit EntityType entity, typ.

weiss ich, hab auch nur diesen code benutzt

Code: [AUSKLAPPEN]
; Alle schüsse durchgehen
For s.schuss = Each schuss

   ; Kollidierendes Objekt
   col = EntityCollided(s\sprite, DUMMY_TYP)
     
   ; Wenn es eine Kollision gibt..
   If Not col = 0
   
     ; Alle dummies durchgehen..
     For d.dummy = Each dummy
      ; ..und schauen zu welcher Typeinstanz das Kollidierende Objekt gehört.
      If d\mesh = col
        ; Dann von dieser den Schaden bei Health abziehen
        d\health = d\health - s\dmg
      EndIf
     Next

   EndIf


Next


den rest hab ich ja schon. nur wird die variable s\dmg ned von der d\health abgezogen : /

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group