andere Kollisionsart/abfrage ?
Übersicht

![]() |
StarGazerBetreff: andere Kollisionsart/abfrage ? |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
tokamak | ||
between angels and insects |
![]() |
StarGazer |
![]() Antworten mit Zitat ![]() |
---|---|---|
??
das soll heißen ? ein Befehl ? gibs aber nicht in der OnlineHilfe |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
das ist eine Physik engine, die dir fasst alles abnimmt, mehr erfährst du mit Suche! | ||
between angels and insects |
![]() |
StarGazer |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wenn es bei radius-kollision bleiben soll, kannste ja entitydistance benutzen.
ansonsten kann man entitytype gezielt auf 0 schalten. |
||
![]() |
StarGazer |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ? ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
![]() |
StarGazer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Super. Ich danke Euch für die Vorschläge.
Werde sie gleich mal ausprobieren. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group