Collisions proplem

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

SYSThern

Betreff: Collisions proplem

BeitragDi, Jun 24, 2008 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Wie der Titel schon sagt hab ich ein proplem mit der kollision:

In meinem Spiel Jump_Racer gibt es Punkte (sogenannte Points) die man einsammeln muss um das Level zu beenden. Bisher hat alles gut funktioniert bis ich eine Explosion einbaute, also wenn man z. B. in Lava fährt oder mann zu weit nach unten fliegt und aufprallt , dass mann explodiert. Jetz ist mir aufgefallen das, wenn ich einen Point einsamle auch explodiere obwohl das nicht sein sollte.





Meine collision:
Code: [AUSKLAPPEN]

Const BODY=1,WHEEL=2,SCENE=3,BOTTOMTYPE=4,
Const POINT1=6,POINT2=7,POINT3=8,POINT4=9,COLLITYPE=10

   Collisions BODY,SCENE,2,3
   Collisions WHEEL,SCENE,2,3
   Collisions WHEEL,BOTTOMTYPE,2,2
   Collisions BODY,BOTTOMTYPE,2,2
   Collisions BODY,POINT1,2,3
   Collisions BODY,POINT2,2,3
   Collisions BODY,POINT3,2,3
   Collisions BODY,POINT4,2,3
   Collisions BODY,POINT5,2,3



mein code für die explosion und das einsammeln der Points:

Code: [AUSKLAPPEN]



      If EntityCollided(car,BOTTOMTYPE)
      
               ShowEntity explosion
               ScaleSprite explosion,Rand(1,50),Rand(1,50)
               EntityOrder explosion,-1
               HideEntity car
               move=0
            If play_expo_sound = 0 Then
                 play_expo_sound = 1
                 PlaySound expo
            EndIf
            Else
                   play_expo_sound = 0
               HideEntity explosion
               move=1
            EndIf
      If EntityCollided(car,POINT1)
         PointsToFinish=PointsToFinish-1
         PlaySound pointpickup

         HideEntity point[1]
      EndIf


      If EntityCollided(car,POINT2)
         PointsToFinish=PointsToFinish-1
         PlaySound pointpickup
         HideEntity point[2]
      EndIf
      If EntityCollided(car,POINT3)
         PointsToFinish=PointsToFinish-1
         PlaySound pointpickup

         HideEntity point[3]
      EndIf
      If EntityCollided(car,POINT4)
         PointsToFinish=PointsToFinish-1
         PlaySound pointpickup
         HideEntity point[4]
      EndIf
      If EntityCollided(car,POINT5)
         PointsToFinish=PointsToFinish-1
         PlaySound pointpickup

         HideEntity point[5]
      EndIf



ohhe ihr könnt mir helfen kann auch den ganzen code bringen...

mfg SYSThern
Tools and Programms
--------------------
www.systhern.de

ozzi789

BeitragDi, Jun 24, 2008 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Änder mal das mit dem points (kanste alle 5 in nem Dim speichern , und wenn nein bitte keinen stress -.-)
2. Vlt sind deine Points falsch positioniert , so dass sie mit BOTTOMTYP in berührung kommen
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

SYSThern

Betreff: ok

BeitragDi, Jun 24, 2008 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
aha also meinst du wenn ich sie über dem bode(BOTTOMTYPE) positioniere das es dann klappt??
Tools and Programms
--------------------
www.systhern.de

SYSThern

Betreff: jo

BeitragDo, Jun 26, 2008 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
also habs jetz geschafft hab einfach meshesintersect für die kollision zwischen point und car verwendet!

trotzdem danke für die hilfe!

mfg SYSThern
Tools and Programms
--------------------
www.systhern.de

ToeB

BeitragDo, Jun 26, 2008 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
1.: Meshesintersect ist einer der langsamsten Befehle, weil er jeden Vertice auf kollision miteinander prüft.
2.: Nehme am besten Types für die Points (es können dann Variable anzahl von Points sein)
3.: Benutze einen Collisions Typ für alle Points (Also Code: [AUSKLAPPEN]
CONST POINT =2:Collisions BODY,POINT,2,3:EntityType point1,POINT
, denn ich glaub damit kommt BB besser klar, und beim Prüfen dann nur noch Code: [AUSKLAPPEN]
If EntityCollided(car,POINT) = Point1 ... ElseIf EntityCollided(car,POINT) = point2
) ...)


Nur mal so als verbesserungsvorschläge
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

SYSThern

Betreff: ok

BeitragDo, Jun 26, 2008 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ja weiß ich!

würde doch auch mit Array gehen oder?
Tools and Programms
--------------------
www.systhern.de

ToeB

BeitragDo, Jun 26, 2008 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja klar (Dim POINT(5))...

Du kannst auch wenn du eine Variable anzahl von Points hast und keine Types nehmen möxhtest, kannst du das so machen, dass du, wenn du ein Level lädst und so, dann wird ausgelesen, wie viele Points das sind, und wird dann das Array neu gedimmt...


mfg ToeB[/code]
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group