Aktualisierung nach Kollision mit EntityCollided [Gelöst]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Trust

Betreff: Aktualisierung nach Kollision mit EntityCollided [Gelöst]

BeitragMi, Apr 14, 2010 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo habe folgendes Problem das hier noch nicht behandelt wurde.

Der Code:
Code: [AUSKLAPPEN]
Function PowerUpCollisions()
      For p.Player = Each Player
            For pu.PowerUp = Each PowerUp
                  If EntityCollided(pu\Obj, 1)
                        Select pu\Name$
                              Case "HealthPack"
                                    If p\Health < 100
                                          p\Health = 100
                                          HideEntity pu\Obj
                                    EndIf
                        End Select
                  EndIf
            Next
      Next
End function


Die Kollision mit dem PowerUp funktioniert soweit und p\Health erhält den Wert 100 falls es vor der Kollision unter 100 war.
Nur leider bleibt p\Health danach 100 oder bzw wird immer wieder auf 100 gesetzt wenn der player schaden nimmt. Obwohl ich das Powerup eigentlich nach der Kollision Hide und somit normalerweise keine Kollision mehr möglich wäre.
Also is es mir nichtmehr möglich irgendwie p\health auf einen anderen wert als auf 100 zu setzen sobald ich einmal mit dem powerup kollidiert bin.
Mir kommt es so vor als das EntityCollided bei nicht kollision nicht wieder auf den Wert 0 gesetzt wird.
Habe es auch mit einer Variablen versucht die den Wert von EntityCollided speichert, und nach Kollision auf 0 gesetzt, Leider kein Erfolg.

Ich bin hier überfordert. wäre sehr nett wenn mir jemand helfen könnte!

Vielen Dank

Trust
  • Zuletzt bearbeitet von Trust am Sa, Apr 24, 2010 17:22, insgesamt einmal bearbeitet

Eingeproggt

BeitragMi, Apr 14, 2010 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne jemals selbst dieses Problem bewältigt zu haben - hilft dir ClearCollisions?
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Trust

BeitragDo, Apr 15, 2010 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antwort.

Aber leider habe ich das auch schon versucht, ohne gewünschtes Ergebnis zu erreichnen.
Denn dann existieren keine Kollisionen mehr und der Spieler fällt sogar durch die Map.

Hat vielleicht noch wer eine Idee woran es liegen kann?

Xeres

Moderator

BeitragDo, Apr 15, 2010 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest ResetEntity probieren. Allerdings sollte die Kollision ja auch nur einmalig Stattfinden. Welche BlitzBasic Version benutzt du?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Trust

BeitragDo, Apr 15, 2010 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
ResetEntity würde nix nützen, da ja auch mit HideEntity keine Kollision mehr stattfinden kann.
Findet auch nicht, das hab ich getestet.
Trotzdem führt er die Befehle nach EntityCollided aus. (p\Health = 100 usw.).
Ich glaube das der Wert von EntityCollided nichtmehr verändert wird wenn es keine Kollision gibt.

Denn das Koriose ist:
Ich habe zu Testzwecken mal das "HideEntity pu\Obj mit "FreeEntity p\Obj, "Delete pu.PowerUp" ausgetauscht... Und siehe da, es funktioniert wie am schnürchen.
Nur möchte ich die Objekte ja nicht komplett aus dem Speicher entfernen, da ich sie später mithilfe eines Timers wieder sichtbar machen möchte (ShowEntity).
Was läuft da Falsch??
 

Omenaton_2

BeitragFr, Apr 16, 2010 9:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube hiden allein schaltet kollisionen nicht ganz ab. Diese Erfahrung habe ich auch machen müssen, als ich das Sterben und Wiederbeleben (nach Verschieben) des Spielerraumschiffes programmiert habe.
Selbst, wenn du nicht nach Collisions checkst, kann Collision statfinden.
Bei mir hat es geholfen vorübergehend die Collision Type des Objektes mit ResetEntity abzuschalten.

Trust

BeitragSo, Apr 18, 2010 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso und nach bestimmter Zeit (wenn man es wieder auf Kollision prüfen möchte) eben wieder den entitytype setzen? (Entitytype pu\obj, 10) zb... ?
 

Omenaton_2

BeitragMo, Apr 19, 2010 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja.
In meinem Fall resete ich die Collision bevor ich das Objekt verschiebe und gleich nach dem das getan ist weise ich dem Objekt wieder die Kollisionsinformationen zu.

Trust

BeitragSa, Apr 24, 2010 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok alles klar, funktioniert wunderbar.
Danke vielmals!

Lg Trust

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group