Camera / Player = Pivot ----> Problem!
Übersicht

![]() |
NeoxitBetreff: Camera / Player = Pivot ----> Problem! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo erstmal!
War lange zeit inaktiv was B3D angeht und wollte mich nun mal wieder dran versuchen. Also gleich mal zum Problem. Ich habe: 1 Pivot (PIVOT_PLAYER) 1 Mesh(MESH_PLAYER) 1 MesH(MESH_TERRAIN) 1 Cam (CAM_PLAYER) Habe PIVOT_PLAYER und MESH_PLAYER auf das gleiche Feld gesetzt (y = 0 , x = 0 , z = 0) CAM_PLAYER und MESH_PLAYER als Child dem PIVOT_PLAYER zugewiesen. Dann die CAM_PLAYER versetzt hinter den MESH_PLAYER. Dann die CAM_PLAYER um 15° nach unten Neigen lassen. Dann die CAM_PLAYER um 50 Punkte nach oben gesetzt. Klasse ich habe ein Third-Person-Cam. Noch eine Bewegung mit den Tasten "W-A-S-D" und eine drehung mit "Q-E" erstellt. (für PIVOT_PLAYER) "Juhuu alles läuft wie es soll..." Nun die Kollision! CONST COL_PLAYER = 1 CONST COL_TERRAIN = 2 Collisions COL_PLAYER, COL_TERRAIN, 1 ,2 Alles klar testen wir das doch mal... Beweg mich und siehe da! MESH_PLAYER kollidiert mit MESH_TERRAIN so wie es soll.... und die cam? Die befindet sich immer noch da wo ich hingesteuert habe OHNE! zu kollidieren. Habe auch versucht den PIVOT_PLAYER Kollidieren zu lassen... dann gehen aber Kugel und Cam durch... Allerdings soll die CAM_PLAYER wenn der MESH_PLAYER kollidiert immer noch da bleiben wo MESH_PLAYER zu finden ist. Ich hoffe man versteht mich ... habe es mit Code: [AUSKLAPPEN] PositionEntity pivot_player,EntityX#(mesh_player),EntityY#(mesh_player),EntityZ#(mesh_player)
versucht. Dann bewegt sich nix mehr xD Ich zeige euch mal den kompletten programmcode: Code: [AUSKLAPPEN] Graphics3D 800,600,32,2
SetBuffer BackBuffer() AppTitle "Neoxit's 3D Programm" Const COL_PIVOT_PLAYER = 1 Const COL_TERRAIN = 2 Global pivot_player = CreatePivot() EntityType pivot_player,COL_PLAYER Global mesh_player = LoadMesh("Meshes/kugel.3ds",pivot_player) ;SpielerMesh Laden EntityType mesh_player,COL_PIVOT_PLAYER Global mesh_land = LoadMesh("Meshes/terrain.3ds") ;TerrainMesh Laden EntityType mesh_land,COL_TERRAIN ;Kollisionsnummern Zuweisen Global cam_playercam = CreateCamera(pivot_player) Global mesh_skybox = MakeSkyBox("Data/skybox/sky") ;-----Settings---- CameraRange cam_playercam,1,10000 ;Cam Sichtweite setzen CameraFogMode cam_playercam,1 ;Cam Nebel anmachen CameraFogColor cam_playercam,150,150,150 ;Cam Farbe leicht grau AmbientLight 255,255,255 ;Umgebungslicht Aktivieren ScaleEntity mesh_player,0.1,0.1,0.1 ;Player verkleinern :::: PositionEntity cam_playercam,0,25,-50 ;Cam Positionieren (hinter Spieler) TurnEntity cam_playercam,15,0,0 ;Cam Drehen (15° nach unten) Collisions COL_PIVOT_PLAYER,COL_TERRAIN,2,2 ;============Hauptschleife============ Repeat Cls If KeyDown(17) Then MoveEntity pivot_player,0,0,5 If KeyDown(31) Then MoveEntity pivot_player,0,0,-5 If KeyDown(30) Then MoveEntity pivot_player,-5,0,0 If KeyDown(32) Then MoveEntity pivot_player,5,0,0 If KeyDown(16) Then TurnEntity pivot_player,0,2,0 If KeyDown(18) Then TurnEntity pivot_player,0,-2,0 ;PositionEntity pivot_player,EntityX#(mesh_player),EntityY#(mesh_player),EntityZ#(mesh_player) PositionEntity mesh_skybox,EntityX(pivot_player,1),EntityY(pivot_player,1),EntityZ(pivot_player,1) ;SkyBox Cameragleich positionieren ^^ UpdateWorld RenderWorld Text 0,0,"Kollision(en):" For i=1 To col Text 000,i*20,"Entity="+CollisionEntity(pivot_player,i) Text 150,i*20,"Surface="+CollisionSurface(pivot_player,i) Text 300,i*20,"Triangle="+CollisionTriangle(pivot_player,i) Next Flip Until KeyHit(1) End Function MakeSkyBox( file$ ) m=CreateMesh() ;front face b=LoadBrush( file$+"_FR.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0 AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;right face b=LoadBrush( file$+"_LF.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0 AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;back face b=LoadBrush( file$+"_BK.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0 AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;left face b=LoadBrush( file$+"_RT.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0 AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ;top face b=LoadBrush( file$+"_UP.bmp",49 ) s=CreateSurface( m,b ) AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0 AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1 AddTriangle s,0,1,2:AddTriangle s,0,2,3 FreeBrush b ScaleMesh m,100,100,100 FlipMesh m EntityFX m,9 EntityOrder m,10 Return m End Function Ich hoffe mir kann jemand helfen. Vllt. sind meine gecodeden lösungen auch gar nicht so klasse und man sollte es vllt. komplett anders machen?! Bitte um Hilfe! Mit freundlichen Grüßen euer Neoxit |
||
![]() |
NeoxitBetreff: Ohh man xD |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also habs nu selber gelöst xD Man bin ich dumm xD
statt: Global pivot_player = CreatePivot() EntityType pivot_player,COL_PLAYER einfach: Global pivot_player = CreatePivot() EntityType pivot_player,COL_PIVOT_PLAYER Danke dennoch. ;D |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group