blitz3d Kollision problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

monkfurts

Betreff: blitz3d Kollision problem

BeitragMi, Jan 11, 2012 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein plroblem ist das ich einen würfel(koerper) gemacht habe und der soll mit einer mauer Kollidieren
das tut er auch nur wenn ich direkt an der mauer stehe und dan w(taste zum nach vorne gehen) drücke
dann ist der würfel halb in der mauer und wenn ich los lasse ist er wieder vor der Mauer.

Hier der code in dem der Fehler liegen dürfte:
Code: [AUSKLAPPEN]
 

...
;der teil für Kollisionen

EntityType koerper,2    ; der würfel
EntityType ter,1             ;die spielwelt mit der mauer im 3ds format
Collisions 2,1,2,2
...
;der teil für die Steuerung in der haupt schleife

If KeyDown(17) Then speed# = 1
If KeyDown(42) And KeyDown(17) Then speed# =2
If Not KeyDown(17) Then speed# = 0
If KeyDown(31) Then MoveEntity koerper,0,0,-1
MoveEntity koerper,0,0,speed#
If KeyDown(30) Then MoveEntity koerper,-0.4,0,0
If KeyDown(32) Then MoveEntity koerper,0.4,0,0
TurnEntity cam,MouseYSpeed()*0.2555,0,0
TurnEntity koerper,0, -MouseXSpeed()*0.2555,0,0
If KeyDown(17) Then TurnEntity cam,0,0,wackeln#
...
waittimer(timer)
RenderWorld
UpdateWorld
flip


und hier der komplette allerdings glaube ich das der Fehler oben liegt:
Code: [AUSKLAPPEN]
;----------includes--------------

;Include "includes\draw3d2.bb"
;Include "includes\drawsgg.bb"
;Include "includes\drawxtd.bb"
;Include "includes\start.bb"
;Include "includes\wb3dstyles.bb"
;Include "includes\3d.bb"

;----------graphics--------------

Graphics3D 1920,1080,32,1
SetBuffer BackBuffer()
timer = CreateTimer(60)

;----------------camera--------------------

cam = CreateCamera()
light = CreateLight()
 
;-------------interface----------------------

fadenkreuz = LoadImage("data\tex\zielr.png")

;----------------terrain--------------------

ter = LoadMesh("data\cin\ter.3ds")
 
;----------------mesh-----------------------
koerper = CreateCube()
MoveEntity koerper,0,-22,0

waffe1 = LoadMesh("data\cin\guns.3ds")
waffe2 = LoadMesh("data\cin\gunh.3ds")
waffe3 = LoadMesh("data\cin\gun2.3ds")
TurnEntity waffe2,0,180,0
TurnEntity waffe1,0,180,0
TurnEntity waffe3,0,180,0



;-----------------enttiyparent----------------
EntityParent cam,koerper
EntityParent waffe2,cam
EntityParent waffe1,cam
EntityParent waffe3,cam
EntityParent waffe3,cam

;-----------------colides---------------------
EntityType koerper,2
EntityType ter,1

Collisions 2,1,2,2

;------------------sonstiges------------------
MoveEntity waffe3,8,-5,-17
MoveEntity waffe2,-6,-5,-17
MoveEntity waffe1,-6,-5,-17

wackeln# = -0.2
wackels# = 0
;-------------------------------------------------------------------------
;-------------------------hauptschleife-----------------------------------
;-------------------------------------------------------------------------

While Not KeyDown(1)
;---------------------wackeln------------------

If KeyDown(17) Then
If wackels# = 0 Then wackeln# = wackeln# + 0.02
If wackels# = 1 Then wackeln# = wackeln# - 0.02
If wackeln# > 0.2 Then wackels# = 1
If wackeln# < -0.2 Then wackels# = 0
EndIf

If KeyDown(31) Then
If Not KeyDown(17) Then
If wackels# = 0 Then wackeln# = wackeln# + 0.02
If wackels# = 1 Then wackeln# = wackeln# - 0.02
If wackeln# > 0.2 Then wackels# = 1
If wackeln# < -0.2 Then wackels# = 0
EndIf
EndIf


;---------------koerper-steuerung-------------
If KeyDown(17) Then speed# = 1
If KeyDown(42) And KeyDown(17) Then speed# =2
If Not KeyDown(17) Then speed# = 0
If KeyDown(31) Then MoveEntity koerper,0,0,-1
MoveEntity koerper,0,0,speed#
If KeyDown(30) Then MoveEntity koerper,-0.4,0,0
If KeyDown(32) Then MoveEntity koerper,0.4,0,0
TurnEntity cam,MouseYSpeed()*0.2555,0,0
TurnEntity koerper,0, -MouseXSpeed()*0.2555,0,0
If KeyDown(17) Then TurnEntity cam,0,0,wackeln#


;----------------minigun-drehung---------------
If MouseDown(2) Then
mgdrehung# = mgdrehung# + 0.1
Else mgdrehung# = mgdrehung# - 0.3
EndIf
If mgdrehung# > 7 Then mgdrehung# = 7
If mgdrehung# < 0 Then mgdrehung# = 0
TurnEntity waffe1,0,0,mgdrehung#






;--------------------physics--------------------

TranslateEntity  koerper,0,-1,0

MoveMouse GraphicsWidth()/2,GraphicsHeight()/2


;-------------------rendern---------------------
WaitTimer(timer)
RenderWorld
UpdateWorld

;-------------------2d-bereich------------------
DrawImage fadenkreuz,GraphicsWidth()/2-128,GraphicsHeight()/2-128


Flip
 




Wend
End


Ich hab den Fehler einfach nicht gefunden.
Ich habe auch schon in den Einstellungen der Kollision geändert aber hat nix gebracht.
win 7 ultimate 64-bit | core i7 2600k 4x3,4 ghz | nvidia gtx 560-ti oc | 6gb ram

Tankbuster

BeitragMi, Jan 11, 2012 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
mache erst UpdateWorld und dann RenderWorld. Sollte funktionieren Wink Achja, und benutze Flip 0 Wink Weil du einen Timer hast Wink

Es liegt daran.

Du veränderst die Position, Renderst dann, und korrigierst dann die Position.
Du musst ja zuerst die Position ändern, dann korrigieren und dann rendern Wink
Twitter
Download Jewel Snake!
Windows|Android

Xeres

Moderator

BeitragMi, Jan 11, 2012 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
EntityBox nicht vergessen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

monkfurts

BeitragMi, Jan 11, 2012 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok danke funktioniert
win 7 ultimate 64-bit | core i7 2600k 4x3,4 ghz | nvidia gtx 560-ti oc | 6gb ram

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group