Die Skybox musst du raus machen wenn es laufen soll.
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; PureBasic - Terrain
;
; (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;
#CameraSpeed = 0.5
#MouseSpeed = 3
waterlevel = 15
IncludeFile "Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY
If InitEngine3D()
Add3DArchive("Data", #PB_3DArchive_FileSystem)
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
AmbientColor(RGB(255,255,255))
CreateMaterial (0, LoadTexture(0, "Terrain_Texture.jpg"))
AddMaterialLayer(0, LoadTexture(1, "Terrain_Detail.jpg"), #PB_Material_Add)
CreateTerrain("terrain.png", MaterialID(0), 1, 1, 1, 20)
CreateCamera(0, 0, 0, 100, 100)
;CameraLocate(0, 128, 128, 128)
CameraFOV(0, 60)
SkyBox("sun.png") ; Mach micht raus
CreateWater(0, 455, waterlevel, 543, 255,#PB_World_WaterLowQuality| #PB_World_WaterSmooth|#PB_World_WaterSun )
Sun(-100, 20, 300, RGB(255,255,200))
camX.f = 0
camY.f = 128
camZ.f = 0
vY.f = 0
grav.f = 0.1
Height.f = 0
hot.f = 0
Repeat
Screen3DEvents()
Height = TerrainHeight(CameraX(0), CameraZ(0))
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
camX - #CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Right)
camX + #CameraSpeed
EndIf
If KeyboardPushed(#PB_Key_W)
camZ =camZ- Cos(2*#PI/360 * (MouseX))* #CameraSpeed
camX =camX- Sin(2*#PI/360 * (MouseX))* #CameraSpeed
ElseIf KeyboardPushed(#PB_Key_S)
camZ =camZ+ Cos(2*#PI/360 * (MouseX))* #CameraSpeed
camX =camX+ Sin(2*#PI/360 * (MouseX))* #CameraSpeed
EndIf
If KeyboardPushed(#PB_Key_A)
camZ =camZ- Cos(2*#PI/360 * (MouseX + 90))* #CameraSpeed
camX =camX- Sin(2*#PI/360 * (MouseX + 90))* #CameraSpeed
ElseIf KeyboardPushed(#PB_Key_D)
camZ =camZ+ Cos(2*#PI/360 * (MouseX + 90))* #CameraSpeed
camX =camX+ Sin(2*#PI/360 * (MouseX + 90))* #CameraSpeed
EndIf
If KeyboardPushed(#PB_Key_Space) And canJump
canJump = 0
vY = 1
EndIf
EndIf
If ExamineMouse()
MouseX = MouseX-(MouseDeltaX()/10)*#MouseSpeed
If MouseX > 360
MouseX - 360
ElseIf MouseX < 0
MouseX + 360
EndIf
MouseY = MouseY-(MouseDeltaY()/10)*#MouseSpeed
EndIf
camY + vY
vY - grav
If camY < Height
camY = Height
vY = 0
Else
EndIf
If camy < waterlevel
Fog($AFDB99, 150, 1, 100)
Else
Fog(0, 0, 1, 1)
EndIf
If camy = Height
canJump = 1
EndIf
RotateCamera(0, MouseY, MouseX, 0, PB_Absolute)
CameraLocate(0, camX, camY + 2, camZ)
;MoveCamera (0, KeyX, -CameraY(0)+Height+8, KeyY)
RenderWorld()
Screen3DStats()
FlipBuffers()
Delay(20)
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End
Die Skyboxdarstellung ist unter Wasser fehlerhaft.
Das Wasser spiegelt hat einen Wellengang und verzehrt wenn man hindurchschaut.
Außerdem kann man eine Sonnenspiegelung simulieren.
Für Caustics und Foam
Gibt es leider keine Info irgendwoe müssen da noch Texturen geladen werden... aber wie?
Hat jemand von euch noch den Link zum neuen Demo-Pack mit dem Panzerbeispiel und den anderen Kram?