Gegenstände von der Wand abprallen lassen...

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

TheProgrammer

Betreff: Gegenstände von der Wand abprallen lassen...

BeitragDi, Jun 22, 2004 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.

Ich möchte Handgranaten in mein Spiel einbauen
und brauche dazu das Wissen, wie man
Gegenstände (die Granaten) im richtigen
Winkel von einer Wand abprallen lässt.
Bei Antworten bitte mit Bsp Exclamation

Code: [AUSKLAPPEN]

If EntityCollided(granate,2) Then
 ...
Endif


Danke
aktuelles Projekt: The last day of human being
 

Dreamora

BeitragDi, Jun 22, 2004 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
einfach den Bewegungsvektor an der Wand abprallen lassen. Bei Ebenen in XY oder ZY richtung heisst das einfach x bzw. z invertieren
ansonsten geht das nur über ne matrix-vektor multiplikation

oder du nimmst tokamak
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TheProgrammer

BeitragDi, Jun 22, 2004 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Question
aktuelles Projekt: The last day of human being

ChrisAttack

BeitragDi, Jun 22, 2004 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
inventieren = umdrehen
tokamak = physikengine
B3D
MSVC++
DX9SDK

TheProgrammer

BeitragDi, Jun 22, 2004 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann mir da bitte jemand ein
Beispiel geben?
aktuelles Projekt: The last day of human being
 

Affje

BeitragDi, Jun 22, 2004 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
wie bindet man tokamak eigentlich ein??
www.drachengarde.tk
Guckst da Hier
 

Dreamora

BeitragDi, Jun 22, 2004 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
den tokamakwrapper nehmen und wie angegeben in die userlib befördern mit der decls.

danach einfach die objekte definieren und tokamak rechnen lassen.

Beispiel wofür Programmer? wie gesagt für Achsenflächen steht es da und für den Rest gibts kein Beispiel, da du definitiv zu wenig mathe verstehst für das thema, sorry ( kommt dann irgendwann in der 10-12 )
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

TheProgrammer

BeitragDi, Jun 22, 2004 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Crying or Very sad
aktuelles Projekt: The last day of human being
 

INpac

BeitragDi, Jun 22, 2004 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, würde ebenfalls Tokamak benutzen, um ungewollte Bugs in der Abprallroutine zu vermeiden und somit den Spieler zu ärgern Wink

Wenn dein ganzes Level ein einziges Mesh ist, benutze den Code aus dem Bsp "Toka Car.bb" o.ä., das bei der Engine beiliegt. Da gibts ne Function "MakeTokaCollider()", die dir ein Mesh, in dem Fall dein Level als Toka-Objekt einliest.

Für die Granaten erstellst du dann immer jeweils ein Toka-Objekt (RigidBody > TOKRB_Create()), und gibts dem ganzen am besten einen Radius (TOKRB_Addsphere( toka_obj, radius# )). Dann errechnest du mit TFormVector, TformedX() etc den Vektor aus, mit dem das Toka-Obj weggeworfen wird, also mit TOKRB_ApplyImpulse toka_obj, TFormedX()*wurfspeed, TFormedY()*wurfspeed, ....

TheProgrammer

BeitragDi, Jun 22, 2004 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst mir doch trotzdem n' Beispiel geben,
was ich nur einfügen muss und froh bin.
aktuelles Projekt: The last day of human being

TheProgrammer

BeitragDi, Jun 22, 2004 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Wo bekomme ich dieses Tokamak her?
aktuelles Projekt: The last day of human being
 

INpac

BeitragDi, Jun 22, 2004 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
nein Smile






Type granate
field mesh
field toka
...
end type

function ThrowGrenade()

g.granate = new granate
g\mesh = ...
g\toka = tokrb_create()
tokrb_addsphere( g\toka, 1 )

; ähh, da bin ich mir jetzt nicht mit den paras sicher...:
tformvector 0,0,1,cam,0
ws# = wurfspeed = 10 ; zB
tokrb_apllyimpulse g\toka, tformedx()*ws, tformedY()*ws, tformedZ()*ws

end function


function UpdateGrenades()

for g. ...
g\x = tokrb_getx()
g\y = tokrb_gety()
g\z = tokrb_getz()
g\rx = tokrb_getpitch()
...
positionentity g\mesh, g\x,g\y,g\z
rotateentity g\mesh, g\rx,g\ry,g\rz
...
next

end function

Natürlich darfste nicht TOKSIM_Advance() vergessen Wink



hab ich jetzt alles ausem Standt geschrieben, keine Garantie, sollte klappen

Mr.Keks

BeitragDi, Jun 22, 2004 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
nx#      = CollisionNX(b\mesh,col)
ny#      = CollisionNY(b\mesh,col)
nz#      = CollisionNZ(b\mesh,col)
cpit#   = (ATan2(ny,nz)+360) Mod 360
cyaw#   = (ATan2(nx,nz)+360) Mod 360
b\pit#   = -b\pit + cpit*2 + 180 ;Abs(b\pit-cpit)*2*Sgn(b\pit-cpit)
b\yaw#   = -(+b\yaw - cyaw*2);Abs(b\yaw-cyaw)*2*Sgn(b\yaw-cyaw)
b\speed = b\speed*.6 - b\grav*.3
b\grav# = 0
RotateEntity b\mesh,-b\pit,b\yaw,0
aus einem projekt. seinerzeit habe ich irgendwas falsch gemacht und es etwas verhunzt. aber ganz falsch düften die berechnungen nicht sein. Smile (ganz ohne tokamak und so)
MrKeks.net

TheProgrammer

BeitragMi, Jun 23, 2004 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe jetzt ein weitertes Problem:

Wenn ich schreibe:

Code: [AUSKLAPPEN]

If EntityCollided(granate,2) Then
 End
Endif


Das funktioniert noch nicht mal.

übrigens...

Code: [AUSKLAPPEN]

EntityType granate,1
EntityType level,2

...

Collisions 1,2,2,2


hab ich.

Könnt ihr mir helfen?
aktuelles Projekt: The last day of human being
 

INpac

BeitragDo, Jun 24, 2004 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm...

gibts denn gar keine Kollision?

haste UpdateWorld?

TheProgrammer

BeitragDo, Jun 24, 2004 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab's schon anders gelöst...
aktuelles Projekt: The last day of human being
 

HOT-BIT

Gast

BeitragFr, Jun 25, 2004 12:48
Antworten mit Zitat
Hi,

das ist aber Super, wenn du das anders gelöst hast !

Warum läßt du dann die anderen dumm sterben ?

Zuerst viel fragen, und wenn eine Antwort gefunden hast, dann gibts keinen Kommentar oder die Lösung ?

Toni

TheProgrammer

BeitragFr, Jun 25, 2004 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab das Problem etwas umständlich gelöst,
aber es funktioniert:

Ich lasse einen Pivot dieselbe Flugbahn fliegen,
wie die Granate (der Pivot hat ja keine Kollision)

Wenn sich die X, Y oder Z - Koordinaten
der beiden Objekte unterscheiden, hat die Granate
einen Gegenstand berührt...
aktuelles Projekt: The last day of human being

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group