Kamerabewegung - Dicker Fehler

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

ONeill

Betreff: Kamerabewegung - Dicker Fehler

BeitragSo, Sep 18, 2005 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich bin neu in der Programmiererbranche und arbeite auch noch nicht lange an meinem ersten Spiel, aber es ist schon einigermaßen ok!

Bis vor ein paar Tagen ging auch noch alles, nur wenn ich nun versuch die Kamera zu bewegen (klappt nur in bestimmte Richtungen im Spiel) wird sie auf einmal schneller.... ich finde nur leider den Fehler nicht (sie beschleunigt auf locker 100-200 Welteinheiten pro Sekunde (und sie bewegt sich sonst nur 0.2 Einheiten!!))

Könntet ihr euch das mal bitte anschaun?

BlitzBasic: [AUSKLAPPEN]
Function MStartGameSpect()
FlushKeys
FlushMouse
ClsColor 100,100,255
Cls
Graphics3D 800,600,32,1
SetBuffer BackBuffer()

;Texturen und Terrain
terrain=LoadTerrain(\"media/heightmap.bmp\")
textur1=LoadTexture(\"media/grass.jpg\")
textur2=LoadTexture(\"media/sky.jpg\")
textur3=LoadTexture(\"media/water.jpg\",3)
textur4=LoadTexture(\"media/cloud.jpg\",3)
EntityTexture terrain,textur1,0,0
ScaleEntity terrain,1,terrainscaleY#,1 ;Länge,Höhe,Breite <---- Skalieren der Heightmap
TerrainDetail terrain,10000,True
TerrainShading terrain,1
terrain2=CreatePlane()
EntityTexture terrain2,textur1,0,0
EntityType terrain,2

;Wasser erstellen
water=CreatePlane()
ScaleTexture textur3,10,10
EntityTexture water,textur3
EntityBlend water,1
EntityAlpha water,0.15
EntityFX water,1
PositionEntity water,0,9,0
water2=CreatePlane()
ScaleTexture textur3,10,10
EntityTexture water2,textur3
EntityBlend water2,1
EntityAlpha water2,0.50
EntityFX water2,1
PositionEntity water2,0,8.99,0
water3=CreatePlane()
ScaleTexture textur3,10,10
EntityTexture water3,textur3
EntityBlend water3,1
EntityAlpha water3,0.15
EntityFX water3,1
PositionEntity water3,0,9.01,0

;Wolken erstellen
ScaleTexture textur4,100,100
wolken=CreatePlane()
EntityTexture wolken,textur4
EntityFX wolken,1
PositionEntity wolken,0,90,0
RotateEntity wolken,0,0,180

;Licht erstellen
light=CreateLight()
RotateEntity light,90,0,0
AmbientLight 32,32,32

;Kamera erstellen
cam=CreateCamera()
CameraRange cam,1,1000
CameraClsColor cam,0,192,255
PositionEntity cam,103,30,80
EntityType cam,1

;Nebel erstellen
CameraFogMode cam,1 ;0 - Nebel aus / 1 - Nebel an
CameraFogColor cam,0,192,255
CameraFogRange cam,1,200

;Effektsounds laden/einfügen
listerner=CreateListener(cam)
sound=Load3DSound(\"media/judgement.mp3\")

Repeat
; PositionEntity cam,EntityX(cam),terrain_hoehe_fix#+5,EntityZ(cam) ;Stumpf, hackelig
RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0,1
MoveMouse 512,384

If KeyDown(17)=1 Then MoveEntity cam,0,0,+0.2 ;W = Vorwärst
If KeyDown(31)=1 Then MoveEntity cam,0,0,-0.2 ;S = Rückwärst
If KeyDown(57)=1 Then MoveEntity cam,0,+0.2,0 ;Leertaste = Hoch
If KeyDown(46)=1 Then MoveEntity cam,0,-0.2,0 ;C = Runter
If KeyDown(30)=1 Then MoveEntity cam,-0.2,0,0 ;A = Links
If KeyDown(32)=1 Then MoveEntity cam,+0.2,0,0 ;D = Rechts

;Wolken bewegen (realistischer)
wos# = Cos(180)/15000
For wob = 0 To 25
MoveEntity wolken,wos*wob,0,0
Next

;Wasser bewegen (realistischer)
an=an+1 : If an>359 Then an=0
was# = Cos(an)/15000
was3# = Sin(an)/15000
For wab = 0 To 10
MoveEntity water,was*wab,0,0
MoveEntity water3,0,0,was3*wab
Next

;Höhenbestimmung zum Terrain
x1#=EntityX(cam)
camy#=EntityY(cam)
z1#=EntityZ(cam)
terrain_hoehe#=TerrainHeight(terrain,x1#,z1#)
terrain_hoehe_fix#=terrain_hoehe#*terrainscaleY#
c_t_abstand#=camy#-terrain_hoehe_fix#

;Effektsounds einbinden
If MouseHit(1)=1 EmitSound(sound,cam)

;Collosionsberechnungen
Collisions 1,2,2,2

;FPS berechnen
FPS=FPS+1
If MilliSecs()-fps_time>=1000 Then
fps_time=MilliSecs()
FPS_cur=FPS
FPS=0
EndIf

UpdateWorld:RenderWorld ;Welt updaten und rendern

Color 0,0,0
Text 400,15,\"Spectator Mode\",True,True

;Modus anzeigen
If KeyHit(23)=1
If debugmode=1 Goto CheckDMode
debugmode=1
EndIf

.CheckDMode
If debugmode=1
Color 0,0,0
Text 400,15,\"Spectator Mode\",True,True
Text 10,100,\"Frames pro Sekunde:\"
Color 255,10,10
Text 10,120,FPS_cur
Color 0,0,0
Text 10,150,\"Gesamthöhe:\"
Color 255,10,10
Text 10,170,camy#
Color 0,0,0
Text 10,200,\"Höhe des Terrains:\"
Color 255,10,10
Text 10,220,terrain_hoehe_fix#
Color 0,0,0
Text 10,250,\"Höhe Cam zum Terrain:\"
Color 255,10,10
Text 10,270,c_t_abstand#
Color 0,0,0
Text 10,300,\"Position der Camera(X,Y,Z):\"
Color 255,10,10
Text 10,320,x1+\" / \"+camy+\" / \"+z1
EndIf
Flip 0
Until KeyDown(1)

If KeyDown(1)
MediaInit()
MMenuLoad()
EndIf
End Function


Ich hoffe auf hilfreiche Antworten Smile

dimaster

BeitragSo, Sep 18, 2005 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
hi ,
1. beginners corner
2. ich würde sagen daran das an bestimmten stellen mehr angezeigt werden muss das ganze also langsamer ist desswegen empfehle ich dir ne frame bremse einzubauen... dazu den befehl .. createtime und waittimer


mfg dimaster

ONeill

BeitragSo, Sep 18, 2005 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, da ich ja nicht mehr soooo ein Beginner bin, hab ich mit deiner Hilfe den Fehler gefunden (...timer schnickschnack... wer braucht das schon!)

Ich musste einfach die 0 (die ja den FPS freien lauf gibt) hinter Flip wegmachen und schon läufts wieder Wink

Trotzdem danke Smile

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group