andere Kollisionsart/abfrage ?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

StarGazer

Betreff: andere Kollisionsart/abfrage ?

BeitragDo, Jul 01, 2004 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich habe ein Frage zu Kollision.
Es gibt drei verscheidene Kollisionarten.

aus der OnlineHilfe
Reaktion = Was soll bei einer Kollision passieren:
1=stopen
2=sliden (normal)
3=sliden (nur raufsliden)

Aber ich bräuchte was sehr simples was wohl leider fehlt. (hoffe nicht)
Gibt es eine Möglichkeit zu prüfen ob ein Objekt mit einem anderem kollidiert, ohne das eins dieser 3 Reaktionen ausgeführt wird ?
Ich meine damit einfach nur prüfen ob das Objekt kollediert ist, aber dabei soll es nicht stopen/ sliden/ raufsliden, sondern sich durch das kolldierte Objekt hindurchbewegen, aber angeben/zurückliefern das es kolldiert ist.
Einfach auf Kollision prüfen, Bestätigung falls vorhanden zurückliefern, aber sonst nicht darauf reagieren.

Ist so etwas denn möglich ? Hat denn schon jemand sowas gemacht ?

Jan_

Ehemaliger Admin

BeitragDo, Jul 01, 2004 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
tokamak
between angels and insects

StarGazer

BeitragDo, Jul 01, 2004 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
??
das soll heißen ?
ein Befehl ? gibs aber nicht in der OnlineHilfe

Jan_

Ehemaliger Admin

BeitragDo, Jul 01, 2004 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist eine Physik engine, die dir fasst alles abnimmt, mehr erfährst du mit Suche!
between angels and insects

StarGazer

BeitragDo, Jul 01, 2004 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Physik Engine, ok kann ich mir mal anschauen.
Aber ich brauche keine Physik Engine nur um diese Kollisionart zu prüfen, wäre voll die Rechenzeit verschwänung. Ich möchte nur diese eine Kollisionsart, mehr nicht.

StarGazer

BeitragDo, Jul 01, 2004 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
gibs denn keine Funktion in BB3D die das kann ?
es macht eigentlich keinen Sinn 2 verschiedene Kollisionabfragen zu benutzen, die von Blitz und die von der Tokamak.
 

INpac

BeitragDo, Jul 01, 2004 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn es bei radius-kollision bleiben soll, kannste ja entitydistance benutzen.

ansonsten kann man entitytype gezielt auf 0 schalten.

StarGazer

BeitragDo, Jul 01, 2004 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Durch entitytype = 0 wird Kollision doch ausgeschaltet !? wie soll er dann prüfen ob er kollidiert ?
Distance geht leider nicht, da ich auf Polygone abfrage, ob er Polygone berührt, und die können sonstwie gekrümmt sein.
 

fredor

BeitragDo, Jul 01, 2004 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo StarGazer,

genau dieses problem habe ich auch gerade.
Es nervt mich auch tierisch das Blitz einem in
diesem Fall fast zu viel abnimmt. Es gibt so einige Funktionen in Blitz3d
bei denen es Mark Silbly fast zu gut mit uns gemeint hat.

Ich habe dieses Problem auch gerade gestern gepostet und eine ziemlich schlaue anwort bekommen. Einfach die Kollosion abfragen in einer Variable auswerten und speichern und dann kann man die Kolliosionsabfrage mit ResetEntity ausschalten. Ich hoffe ich habe das jetzt richtig verstanden und und wiedergegeben ...
sonst verbessert mich.

In der Blitzbase onlinehilfe ist ein ganz gutes beispiel dabei.
aber bin auch immer noch auf der suche nach alternativlösungen.

Tomahawk hört sich auch nach einer Coolen alternative an. Aber man muss ja auch nicht gleich mit Kanonenkugeln auf Spazen schiessen oder ? Wink.

Bisher habe ich versucht über positionsvergleiche und deren Abstände
mir soetwas wie eine Kolosionsabfrage selber zu bauen... das wird allerding bei vielen Objekten ziemlich langsam.

Optimaler würde ich auch finden wenn einfach keine
reaktion stattfinden würde man dies nicht überall abfangen und nicht mit

Ich habe hier einen leicht geänderten Code von Blitzbase mit dazu gepackt.
Ich hoffe ich bekomme jetzt keine (copyright) probleme.

(Wie gut das man Codes noch nicht in Europa patentieren lassen kann .. puh)


bis dann gruss Fredor


Code: [AUSKLAPPEN]

Graphics3D 640,480,32,2
SetBuffer BackBuffer()

Box = CreateCube()
Sphere = CreateSphere(16)

PositionEntity Box,1,0,0
PositionEntity Sphere,-1,0,0

EntityType Box,1
EntityBox Box,-0.5,-0.5,-0.5,0.5,0.5,0.5
EntityType Sphere,2
EntityRadius Sphere,2

Camera = CreateCamera()
PositionEntity Camera,0,5,-5
RotateEntity Camera,45,0,0

Light = CreateLight(3,Camera)
LightRange Light,5
 Collisions 1,2,3,3
While Not KeyDown(1)
   
   If KeyDown(203) Then MoveEntity Box,-0.05,0,0
   If KeyDown(205) Then MoveEntity Box, 0.05,0,0 :  ResetEntity Box
   If KeyDown(208) Then MoveEntity Box, 0,0,-0.05
   If KeyDown(200) Then MoveEntity Box, 0,0, 0.05
   If KeyDown(28) Then
      Reset = 1
   Else
      Reset = 0
   EndIf
  ; Collisions 1,2,3,3
   If Reset = 1 Then ResetEntity Box
   UpdateWorld : RenderWorld
   If Reset = 1 Then
      Text 0,0,"Kollision von Box-Entity zurückgesetzt"
   EndIf
   If CountCollisions(box)> 0 Then Text 0,20,"Kollision Entity "+ CollisionEntity (Box, 1)

   Flip
Wend
End

Markus2

BeitragDo, Jul 01, 2004 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt noch MeshIntersect aber davor solltest du zumindest
eine Distacne Messung machen weil diese Funk.
Zeitaufwendig ist , am besten testest du einfach nur zwei unsichtbare
Quader ....
Dein Problem hatte ich auch mal bei nem Fußballspiel wo
ich wissen wollte ob der Ball im Tor ist .
Dazu habe ich dann einen unsichtbaren Block rein gemacht und
das ging prima Smile

StarGazer

BeitragSo, Jul 04, 2004 10:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Super. Ich danke Euch für die Vorschläge.
Werde sie gleich mal ausprobieren. Smile

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group