EntityRadius Problem

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Scope

Betreff: EntityRadius Problem

BeitragDi, Feb 14, 2006 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
HI, es geht um das Grundgerüst eines Egoshooters. Ich möchte eine Spielfigur in egoperspektive erstellen, die Springen, sich ducken und an hindernissen hängen bleiben soll.
Dazu habe ich einen Pivot (im Code "pc" genannt) erstellt, welcher mit entityradius einen kollisions radius besitzt.
die derzeitige Welt besteht aus einer plane (boden) und einem mit Milkshape erstellten "testterrain", sprich ein paar blöcken.
wasd ist laufen, leertaste springen. mein Problem. wenn ich auf dem Boden Lauf, ist die y Koordinate des PlayerPivots (PC) = des ersten Parameters von entityradius. sobald ich jedoch auf eine Fläche aus Milkshape lauf. hüpft die Höhe auf die des zweiten parameters. ich bin vollkommen verwirrt, da ich mir auf die Funktionsweise des Befehls keinen reim machen kann. Probiert es selber aus, ich hänge die datei mit der "welt" an und hier ist der Code. lauft (bzw hüpft) mal auf die graue Fläche, welche so ziemlich die selbe höhe hat wie der boden.
Code: [AUSKLAPPEN]

Global fps,fps_show,frame,frame1,lt#,ltzeit#,time,time1,fbeg    ;Framelimiter
Global x#,y#,speedx#,speedz#                           ;Laufen
Global jactive,springen                                 ;Springen
Global fall#                                       ;Gravitation

Const FPS_MAX=85
Const SENS#=6
Const GRAVITY#=8
jspeed=30
ltzeit=MilliSecs()
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()
fbeg=MilliSecs()
;--Camera
Global cam=CreateCamera()
CameraFogMode cam,1
CameraFogRange cam,100,200000
CameraRange cam,1,600000
CameraClsColor cam,0,0,0
CameraFogColor cam,211,219,236
;--Stadt
world=LoadMesh("test.b3d")
ScaleEntity world,60,60,60
;--Boden
Boden=CreatePlane()
Bodentex=LoadTexture ("schwamm.bmp",1)
EntityTexture boden,bodentex
ScaleTexture bodentex,120,120
EntityFX boden,5
;--Sonne
Global sun=CreateLight(2)
MoveEntity sun,100000,100000,-140000
LightColor sun,255,200,100
LightRange sun,200000
PointEntity sun,boden
;--Himmel
;sky=loadskybox(cam)
;EntityParent sky,0
;MoveEntity sky,4000,2450,4000
;--Player
pivcam = CreatePivot()
pc=CreatePivot()
PositionEntity pc,2500,1000,2500
;--Gravitation
EntityRadius pc,50,300
EntityType boden,1
EntityType world,1
EntityType pc,2
Collisions 2,1,2,3
;---------------------
;----HAUPTSCHLEIFE----
While Not KeyHit(1)
   ;--framelimiter
   lt=(MilliSecs()-ltzeit)/1000
   lt=lt*120
   ltzeit=MilliSecs()
   ;--Piv-Positionierung
   PositionEntity pivcam,EntityX(pc),EntityY(pc)+150,EntityZ(pc)
   PositionEntity cam,EntityX(pivcam),EntityY(pivcam),EntityZ(pivcam)
   ;--Maussicht
   pitch = EntityPitch(cam)
   yaw = EntityYaw(pivcam)
   pitch = pitch + MouseYSpeed()*(sens/30)
   yaw = yaw - MouseXSpeed()*(sens/30)
   If pitch < -80 Then pitch = -80
   If pitch > 80 Then pitch = 80
   RotateEntity pivcam,0,yaw,0
   RotateEntity pc,0,yaw,0
   RotateEntity cam, pitch, yaw,0
   MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
   ;--Zeux
   ;--Springen
   If EntityCollided(pc,1) Then
      If KeyHit(57) And jactive=False Then springen=True
   End If
   If springen=True And jactive=False Then jactive=True:fall=35
   If jactive=True And fall<>35 Then
      If EntityCollided(pc,1) Then jactive=False:springen=False
   End If
   ;--Laufen
   speedz=0
   speedx=0
   If KeyDown(17) Then speedz=15*lt
   If KeyDown(30) Then speedx=-15*lt
   If KeyDown(31) Then speedz=-15*lt
   If KeyDown(32) Then speedx=15*lt
   MoveEntity pc,speedx,0,speedz
   ;--Fallen
   If fall<=-400 Then fall=-400
   If Not EntityCollided(pc,1) Then fall=fall-(gravity/6)
   If EntityCollided(pc,1) And jactive=False Then fall=0
   MoveEntity pc,0,fall,0
   ;--Rendern
   FPS_anzeige()
   UpdateWorld
   RenderWorld
   Text 10,10, fps_show
   Flip
Wend
;---------------------
;---------------------

;----FUNKTIONEN----
;Include "skybox.bb"
Function FPS_anzeige()
   frame=frame+1
   frame1=frame1+1
   If MilliSecs()-time>10 Then time=MilliSecs():FPS=frame*10:frame=0
   If MilliSecs()-time1>1000 Then time1=MilliSecs():FPS_show=frame1:frame1=0
   Delay ((1000/FPS_MAX)-(fbeg-MilliSecs()))
   fbeg=MilliSecs()
End Function

wenn ihr mit den parametern von entityradius rumspielt seht ihr, was ich mein.

http://web12.kmsys.de/test.rar
enthält
-Code als bb Datei
-die "Welt" als b3d datei
-die bodentextur als bmp datei

Goodjee

BeitragDi, Feb 14, 2006 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
hat entityradius nicht nur zwei parameter?
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/
 

Scope

BeitragDi, Feb 14, 2006 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
insgesamt 3, aber 2 für die streckung. sprich eine für x radius eine für y raduis und halt noch eine, welches entity man meint

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group