Collisions ein- und ausschalten?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Nerle

Betreff: Collisions ein- und ausschalten?

BeitragMi, Okt 10, 2007 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Kollegen,

Eine 3D-Frage.
Jemand meinte neulich zu mir, Kollisionsabfragen sind immer sehr aufwendig und performance raubend.
Darum möchte ich mit dem Collisions-Befehl möglichst sparsam umgehen - und die Kollisionsabfrage nur stellenweise anschalten - wenn sie wirklich gebraucht wird, und ansonsten wieder ausschalten.
Denn die verschiedenen Kollisionsabfragen häufen sich langsam etwas, und nicht jede wird immer benötigt.

Aber geht das mit Blitz eigentlich?

Einmal den Befehl "Collisions" ausgeführt ist die entsprechende Kollisionsabfrage ja eingeschaltet.
Weshalb es ja z.B. auch unsinnig wäre, diesen Befehl in die MainLoop zu setzen.

Was aber schaltet diese eigentlich wieder aus? Shocked

Ich würde nämlich den Befehl "Collisons" gerne an eine IF-Bedingung knüpfen, und ansonsten wieder ausschalten. Ist das möglich?

mahe

BeitragDo, Okt 11, 2007 0:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest die gesamte Kollisionsliste mittels ClearCollisions leeren und die benötigten wieder neu anlegen.
Ob sich das allerdings lohnt weiß ich nicht.
So aufwendig sind Kollisionen nämlich nicht. Vorallem Kugel-Kugel-Kollisionen tun ganz bestimmt nicht weh.
ʇɹǝıdɯnɹɹoʞ ɹnʇɐuƃıs - ǝpoɥʇǝɯ-ɹoɹɹıɯ ɹǝp uı ,ɹoɹɹǝ,
 

Nerle

BeitragDo, Okt 11, 2007 4:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank mahe für Deinen Tipp, genau das suchte ich. Diesen Befehl hatte ich total übersehen!
Very Happy

Eine Frage habe ich noch: Ist es eigentlich unnötig performance verbrauchend, wenn der "Collisions"-befehl tatsächlich in der MainLoop steht? Oder innerhalb einer Funktion, die immer wieder aufgerufen wird?
Wird hier also unnötig ein Befehl immer wieder ausgeführt - oder handelt Blitz automatisch so, dass ein Collisionsbefehl sowieso ignoriert wird, wenn er bereits eingeschaltet wurde?

Markus2

BeitragDo, Okt 11, 2007 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Collisions hat nix in der Hauptschleife zu suchen .

Wenn du die Collisions ausschaltest möchtest
kannste den EntityType auf 0 stellen .

Collisionen zu Polygonen kosten mehr Zeit .
Kugel->Kugel ist wohl am schnellsten .
Kugel->Würfel
Kugel->Polygon


Wenn du z.B. LinePick benutzt um nen Spieler Objekt zu finden
macht es Sinn den Pickmode z.B. beim Terrain auszuschalten .
LinePicks auf kurze Distance sind auch schneller .
 

Nerle

BeitragDo, Okt 11, 2007 17:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Collisionen zu Polygonen kosten mehr Zeit .
Kugel->Kugel ist wohl am schnellsten .


Das Problem ist, sobald ich Kugel-Kugel-Collision einstelle, funktioniert die Collisionsbfrage nicht.
Obwohl ich bei allen entsprechenden Entitys einen Entity-Radius angegeben habe.
Woran kann es denn noch liegen?

Und zu LinePick - was dürfte denn performance sparender sein:
Eine permanente Kollisionsbfrage (Schuss-Gegner) oder ein Line-Pick bei jedem Schuss?
Und angenommen, die Schussfolge ist äußerst rasch (z.B. mind. 5 Schuss pro Sekunde).
Die Entfernung wäre immer nur max. einen Screen weit, meist geringer.

Markus2

BeitragDo, Okt 11, 2007 18:09
Antworten mit Zitat
Benutzer-Profile anzeigen
die Collision geht nur von bewegten Objekten aus,
vieleicht haste das falsch herum programmiert .


Schuss Gegner Collision taugt nix da das Objekt deinen Spieler
überspringen kann .

ich habs über LinePick gemacht mit der Entfernung wie sich das Objekt auch
nach vorne bewegt .
Das geht zum einen bei Projektilen die man sehen will und auch direkt
wenn man von A nach B springt .

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group