miniode

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

GERMAX

Betreff: miniode

BeitragMo, Mai 03, 2010 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Seit einiger Zeit probiere ich etwas mit den physx-dlls (momentan speziell miniode) herum. Dabei versuche ich:

1. einen Flipperfinger um einen bestimmten Winkel zu drehen (so ca 50-60 Grad). Das funktioniert auch soweit. Dreht man den Finger nicht, stimmt auch die Kollsion (der Finger itself ist ein *.b3d).
Dreht man den Finger aber, bleibt die Kollsionsbox stehen. Diese box stimmt mit der Form des Fingers anscheinend überein (was gut ist).

2. War der Speed der Kugel irgendwann mal 0, kann man diese nicht mehr bewegen (obwohl die Ebene schief ist und ich mit setforce oder applyforce and der Kugel rumzerre).

BlitzBasic: [AUSKLAPPEN]
Include "miniODE.bb"


;This needs to come before CreateSimulation
Graphics3D 1024,768,32,2
MoveMouse 512,384 ;später rausnehmen

;Setup the Blitz3D world

Const lflip=45:rflip=52
Global mz=30

Local SC_FPS=60 ;Desired framerate - this is for "CPU breathing code"
Local VP_FPS=50 ;Desired update rate - this mustn't change during the simulation
Local rtime=Floor(1000.0/SC_FPS),limited=True ;These variables all help with framerate control
Local phystime#=1000.0/VP_FPS
Local ctime=MilliSecs(),accum#=100,dtime

Local centre=CreatePivot()
Local camera = CreateCamera(centre)
PositionEntity camera,0,30,-80

PointEntity camera,centre ;Point it at origin
Local light = CreateLight()
PositionEntity light,300,400,150
PointEntity light,centre

;Create a simulation and set the world's default gravity
ODE_CreateSimulation(0,-9.8*10,0)


;The floor
Local gmesh = CreateCube()
ScaleMesh gmesh,90,1,90
EntityColor gmesh,150,150,150:EntityAlpha gmesh,0.5
Local gbase=ODE_CreateBody()
ODE_SetMode gbase,2
Local gplane=ODE_AddBox(gbase,180,2,180)
ODE_SetEntity gbase,gmesh:ODE_SetRotation(gbase, -6, 0, 0)

;We're going to need a target
Local i,bMesh,body
For i=1 To 8
body=ODE_CreateBody()
ODE_AddBox(body,6,5,6)
ODE_SetPosition body,35,i*7.5,-35
bMesh=CreateCube()
ScaleMesh bMesh,3,2.5,3
EntityColor bMesh,i*32,255-i*32,0
ODE_SetEntity body,bMesh
Next



bandeu=ODE_CreateBody()
ODE_AddBox(bandeu,160,12,6):ODE_SetPosition bandeu,0,0,-70:bMesh1=CreateCube()
ScaleMesh bMesh1,80,6,3:ODE_SetEntity bandeu,bMesh1;:ODE_SetGravMode(bandeu, 0)
ODE_SetMode bandeu,2:EntityAlpha bmesh1,0.7:ODE_SetRotation( bandeu, 0,20, 0)


;mein 1. flipperfinger
;flipper=LoadMesh("myst.b3d")
flipper=LoadMesh("flipperrn.b3d")
fkk=ODE_CreateBody() ;Firing arm
ODE_AddTrimesh(flipper);:ODE_SetMass flipper, 4:ODE_SetMode flipper,1
ODE_SetEntity fkk,flipper
ODE_SetMode fkk,2 ;1 2 3
;ODE_SetGravMode(fkk, 0) ;nograv for this object

ball=ODE_CreateBody()
ODE_AddSphere(ball,4)
ODE_SetPosition ball,30,100,4
baMesh=CreateSphere(16)
ScaleMesh baMesh,4,4,4
EntityColor baMesh,64,64,64
ODE_SetEntity ball,baMesh
ODE_SetMass(ball, 2)

;ODE_SetMode ball,2
;ODE_SetGravMode(ball, 1)



While Not KeyDown(1)
dtime=(MilliSecs()-ctime) ;Time measurement (for frame rate control)
accum=accum+dtime
ctime=MilliSecs()

While accum>=phystime
CaptureWorld

Gosub kugel:Gosub camera
If KeyHit(19) Then ODE_SetPosition ball,30,100,4


If KeyDown(lflip) =True Then
fliplry=fliplry+12
flstat=1
If flbusy=0 Then PlaySound(sfxflipl):flbusy=1
If fliplry>180 Then fliplry=180:flstat=0
ODE_SetRotation( fkk, 0,fliplry, 0)
Else
flbusy=0
If fliplry>120 Then fliplry=fliplry-12:flstat=-1
If fliplry<=120 Then fliplry=120:flstat=0
ODE_SetRotation( fkk, 0,fliplry, 0)
End If


;and cameraview
mz=mz+5*MouseZSpeed()
If mz<1 Then
mz=1
Else
If mz>89 Then
mz=89
End If
End If
mx=mx-0.2*MouseXSpeed()
RotateEntity camera, mz, mx, 0

ODE_UpdatePhysics 0.05

accum=accum-phystime
Wend

ODE_UpdateScene

RenderWorld accum/phystime

Delay rtime-(MilliSecs()-ctime)-(limited+1) ;Free any spare CPU time

;FPS einblenden
If MilliSecs()-t=>1000 Then
t=MilliSecs()
fps=fpstmp
fpstmp=0
End If
fpstmp=fpstmp+1
absframe=absframe+1
Text 0,80, "FPS: "+fps +" "+absframe
;FPS einblenden


Flip limited
Wend

;Free everything and exit
ODE_FreeSimulation
End

.kugel
If KeyDown(76) Then ODE_SetForce(ball, 0, 0, 45);ODE_ApplyForce(ball, 0 ,0, 15) ;numpad 5
If KeyDown(80) Then ODE_ApplyForce(ball, 0 ,0,-15) ;numpad 2
If KeyDown(79) Then ODE_ApplyForce(ball,-15 ,0, 0 );numpad 1
If KeyDown(81) Then ODE_ApplyForce(ball, 15 ,0, 0 );numpad 3
Return

.camera
If KeyDown(200) Then MoveEntity camera, 0, 0, 1 ;up
If KeyDown(203) Then MoveEntity camera,-1, 0, 0 ;left
If KeyDown(205) Then MoveEntity camera, 1, 0, 0 ;right
If KeyDown(208) Then MoveEntity camera, 0, 0,-1 ;down
Return


btw warum ist das eigentlich so? habe nur gesehn, dass das anscheinend mit den Kollsionen besser passt???
ScaleMesh gmesh,90,1,90<----->AddBox(gbase,180,2,180)

Wer kennt sich mit dem Zeug top aus?
Erfolglos begonnene BB-Projekte:TRON/CONVOY/MYSTIC

D2006

Administrator

BeitragMo, Mai 03, 2010 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

ToeB

BeitragMo, Mai 03, 2010 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, Blitzbasic kann nur kollision von einem Nicht-Beweglichen Zu einem Beweglichen objekt prüfen...

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

GERMAX

BeitragDi, Mai 04, 2010 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Kollision wird ja auch durch miniode durchgeführt.

Zu dem Zweck habe ich auch schonmal 2 H-Atome aufeinandergeschossen. Eine Fusion kam aber leider nicht zustande - stattdessen sind die Teile abgeprallt!!!

Naja, 2 Kugeln zu berechnen ist auch nicht so schwierig. Für ein Minigolfspiel oder so wäre das schon ok-für mein Projekt sehe ich da eher black und dann red.
Erfolglos begonnene BB-Projekte:TRON/CONVOY/MYSTIC

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group