kamerapositionsproblem

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Inso

Betreff: kamerapositionsproblem

BeitragMo, Nov 21, 2011 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.. ja schon wieder ein neuer thread von mir Wink

Hab folgendes problem, ich möchte per rechtsklick aus der 3rd person sicht, in eine vogelperspektive(baumodus) wechseln, möchte aber dass man den char noch mit im bild hat..
ansich klappt das, nur hat man den char nicht mit im bild :/ probier hin und her, und kriegs nicht hin.

Ich hab mal das beispielprojekt mit hochgeladen, da seht ihr was ich meine

Bewegen mit den Pfeiltasten, mit Rechtsklick bau modus öffnen/verlassen.
Im baumodus haus bauen mit links klick, mit mausrad objekt drehen, platzieren wieder mit links klick.

hoffe jemand kennt die lösung

http://www.xup.in/dl,37099074/meshtest.rar/
edit: hab ne datei vergessen Wink einfach mit ins stammverzeichnis
http://www.xup.in/dl,12767751/y2.b3d/

dann noch hier der code:
Code: [AUSKLAPPEN]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()


;initialisierung

;Camera bereitstellen
camera=CreateCamera()
CameraRange camera,0.1,10000 ;Sichtweite der Kamera

 MoveEntity camera,0,24,10; kamera leicht nach oben schieben
TurnEntity camera, 30,0,0 ; kamera etwas neigen

EntityType camera,1 ; kamera den kollisionstypen (1) zuordnen

Global pln = CreatePlane()
EntityPickMode pln,2
EntityAlpha pln,0


;spieler erstellen

body = CreateCube()
EntityAlpha body,0.6 ;spieler etwas durchsichtig machen
MoveEntity body,0,2,30 ; den spieler an die richtige stelle verschieben
EntityRadius body,5 ;kollisionsradius des spielers
ScaleEntity body,2,3,1 ;spieler vergrößern
EntityType body,1 ;spieler kollisionstyp(1) zuordenen

EntityParent camera,body ; den spieler der kamera zuordnen


;licht erstellen
light=CreateLight(2)
LightRange light,2000







;die map laden
map = LoadMesh("y2.b3d")
EntityType map,2 ;kollisionstyp der map einstellen
MoveEntity map,0,-20,0

;ein haus laden
Dim house(100)


;Skybox
sky = CreateSphere()  ;Skybox erstellen
ScaleEntity sky,55,55,55 ;skybox vergrößern
PositionEntity sky, EntityX(camera), EntityY(camera),EntityZ(camera) ;den himmel richtig positionieren
EntityParent sky,camera ;den himmal an die kamera "kleben"
EntityTexture sky, LoadTexture("wolken.jpg") ;und schön texturieren
FlipMesh sky ;und das ganze invertieren, damit man den himmel von innen sehen kann
EntityOrder sky,1 ;himmel wird zuerst gemalt

; SKybox ende


lightsky =CreateLight(2,sky)
LightRange lightsky,10000

Collisions 1,2,2,2 ; Collisionsart festlegen
buildmode2=0
;
id = 1
Type house
Field mesh
Field x
Field y
Field z
Field id
End Type


;
While Not KeyDown( 1 )
;MoveEntity body,0,-0.3,0 ;Gravitation

CameraPick camera,MouseX(),MouseY()
If buildmode=1

If buildmode2=0

If MouseHit(1)
wohnhaus.house = New house
wohnhaus\mesh = LoadMesh("house.b3d")
EntityAlpha wohnhaus\mesh,0.5
wohnhaus\id = id
EntityType wohnhaus\mesh,2
id=id+1
buildmode2=1
EndIf

Else
TurnEntity wohnhaus\mesh,0,MouseZSpeed()*5,0
PositionEntity wohnhaus\mesh,PickedX(),-265,PickedZ()


If MouseHit(1)
wohnhaus\x =PickedX()
wohnhaus\y= -265
wohnhaus\z = PickedZ()

PositionEntity wohnhaus\mesh,wohnhaus\x,wohnhaus\y,wohnhaus\z
EntityAlpha wohnhaus\mesh,1
buildmode2 = 0
EndIf

EndIf
EndIf


If buildmode=0
If KeyDown( 205 )=True Then TurnEntity body,0,-3,0
If KeyDown( 203 )=True Then TurnEntity body,0,3,0
If KeyDown( 208 )=True Then MoveEntity body,0,0,-0.8 ;TurnEntity camera,-30,0,0 MoveEntity camera,0,0,-4 TurnEntity camera, 30,0,0
If KeyDown( 200 )=True Then MoveEntity body,0,0,0.8 ;TurnEntity camera,-30,0,0 MoveEntity camera,0,0,4 TurnEntity camera, 30,0,0
EndIf



If MouseHit(2)
If buildmode=1
buildmode=0
TurnEntity camera,-45,0,0
PositionEntity camera,oldcamx,oldcamy,oldcamz
Else
buildmode = 1
If buildmode=1
oldcamx=EntityX(camera)
oldcamy=EntityY(camera)
oldcamz=EntityZ(camera)
TurnEntity camera,45,0,0
MoveEntity camera,0,500,0


EndIf
EndIf
EndIf










UpdateWorld

RenderWorld

Text 0,0,"x: "+PickedX()+", y:"+PickedY()+ ", z:"+PickedZ()

Flip


Wend

End

Ana

BeitragMo, Nov 21, 2011 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wollt den Krams jetzt nicht downloaden und hab den Code nur überflogen, kann also sein das es nicht stimmt aber du neigst die Camera ja insgesamt nur um einen winkel von 75° wenn ich das richtig sehe. Wenn du sie nun sehr weit nach oben bewegst, dann ist dein Char denke ich mal im toten Winkel, bewege die Camera zusätzlich noch ein Stück zurück, dann sollte das auch gehen.
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group