Kamera zurücksetzten
Übersicht BlitzBasic Blitz3D
bbproggerBetreff: Kamera zurücksetzten |
Do, Aug 21, 2008 17:50 Antworten mit Zitat |
|
---|---|---|
Hallo,
ich screibe grad ein 3D Spiel wo man auf einer Insel von einem Gegner verfolgt wird. Als Extras gibt es Bunker zum verstecken , Baeume und Booster um sich schnell nach vorne zu schießen. Ich kann die Kamera drehen und jetzt wollte ich sie mit Taste B zurücksetzten.Normal ist sie auf 0,5,-20 und beim zurücksetzten wieder auf 0,5,-20 leider geht das bis jetzt nicht (sie bleibt einfach da wo sie grad ist). Hier mein Code: [AUSKLAPPEN] Global water_level=-95,water;Wasser Global spieler,gegner,boost_loader,bunker,n_bunker=5;3D Objekte Global boost,boost_active;Specials Global n_trees =5000,tree_sprite;Baeume Global land,ground,land_tex;Land Global light,kamera Graphics3D 1152,864, 32,1 SetBuffer BackBuffer() SeedRnd MilliSecs() light=CreateLight() RotateEntity light,10,0,0 Setup() spieler=CreateCone() EntityType spieler,2 PositionEntity spieler,0,20,0 gegner=CreateCube() EntityType gegner,3 PositionEntity gegner,100,20,0 boost_loader=CreateCylinder() EntityType boost_loader,4 bunker=CreateCylinder(16,0) ScaleEntity bunker,3,3,3 EntityType bunker,5 PositionEntity bunker,0,1,0 kamera=CreateCamera(spieler) PositionEntity kamera,0,5,-15 For k=1 To n_trees Repeat tx#=Rnd (-1000,1000) tz#=Rnd (-1000,1000) ty#=TerrainY( land,tx,0,tz ) Until ty>water_level t=CopyEntity( tree_sprite ) PositionEntity t,tx,ty,tz ScaleSprite t,Rand(2,3),Rand(4,6) Next Repeat tx#=Rnd (-1000,1000) tz#=Rnd (-1000,1000) ty#=TerrainY( land,tx,0,tz ) Until ty>water_level PositionEntity boost_loader,tx,ty,tz For k=1 To n_bunker Repeat tx#=Rnd (-1000,1000) tz#=Rnd (-1000,1000) ty#=TerrainY( land,tx,0,tz ) Until ty>water_level t=CopyEntity( bunker) PositionEntity t,tx,ty,tz ScaleEntity bunker,3,3,3 Next Collisions 2,1,2,2;Spieler - Erde Collisions 3,1,2,2;Gegner - Erde Collisions 2,3,1,2;Spieler - Gegner Collisions 3,2,1,2;Gegner - Spieler Collisions 2,4,2,2;Spieler - boost_loader Collisions 3,5,2,2 While Not KeyHit(1) UpdateP() UpdateG() UpdateC() If KeyHit(16) wire=Not wire WireFrame wire EndIf UpdateWorld RenderWorld Infos() Flip Wend End Function UpdateP() If KeyDown (42) If boost <75 boost_active=1 boost=boost+1 Else boost_active=0 End If Else boost_active=0 End If If KeyDown (200) If boost_active=0 MoveEntity spieler,0,0,1 Else MoveEntity spieler,0,0,10 End If End If If KeyDown (208) If boost_active=0 MoveEntity spieler,0,0,-1 Else MoveEntity spieler,0,0,-10 End If End If If KeyDown (203) TurnEntity spieler,0,5,0 End If If KeyDown (205) TurnEntity spieler,0,-5,0 End If If KeyDown(30) TurnEntity kamera,0,1,0 End If If KeyDown(32) TurnEntity kamera,0,-1,0 End If If KeyDown(17) TurnEntity kamera,-1,0,0 End If If KeyDown(31) TurnEntity kamera,1,0,0 End If If KeyDown(48) PositionEntity kamera,0,5,-20;Dies funst nich End If ty#=EntityY(spieler) y_vel#=(ty-EntityY(spieler)) ty=EntityY(spieler) If KeyDown(57) If jumped=0 y_vel=5 Else End If Else y_vel=y_vel-0.7 End If MoveEntity spieler,0,y_vel,0 End Function Function UpdateG() ty#=EntityY(gegner) y_vel#=(ty-EntityY(gegner)) ty=EntityY(gegner) y_vel=y_vel-0.7 TranslateEntity gegner,0,y_vel,0 PointEntity gegner,spieler MoveEntity gegner,0,0,0.95;Gegebenenfalls deaktivieren End Function Function UpdateC() If EntityCollided (spieler,3) End End If If EntityCollided (spieler,4) boost=0 FreeEntity boost_loader boost_loader=CreateCylinder() EntityType boost_loader,4 Repeat tx#=Rnd (-1000,1000) tz#=Rnd (-1000,1000) ty#=TerrainY( land,tx,0,tz ) Until ty>water_level PositionEntity boost_loader,tx,ty,tz End If End Function Function Infos() Color 255,0,0 Text 10,10,"Du bist auf (X,Y,Z):"+"["+EntityX(spieler)+"] ["+EntityY(spieler)+"] ["+EntityZ(spieler)+"]" Rect 10,30,75,15,0 Rect 10,30,75-boost,15 Text 90,30,"Booster Status" End Function Function Setup() land_tex=LoadTexture("sprites\terrain.jpg",1 ) ScaleTexture land_tex,10,10 land=LoadTerrain("sprites\map.bmp") EntityTexture land,land_tex TerrainShading land,True PositionEntity land,-1000,-100,-1000 ScaleEntity land,2000.0/256,100,2000.0/256 EntityType land,1 TerrainDetail land,750,True ground=CreatePlane() EntityTexture ground,land_tex PositionEntity ground,0,-100,0 EntityOrder ground,9 water_tex=LoadTexture( "sprites\water.bmp",3 ) ScaleTexture water_tex,10,10 water=CreatePlane() EntityTexture water,water_tex PositionEntity water,0,water_level,0 tree_sprite=LoadSprite( "sprites\tree.bmp",7 ) HandleSprite tree_sprite,0,-1 EntityAutoFade tree_sprite,120,150 End Function Das vollständige Spiel (als rar)gibts hier |
||
- Zuletzt bearbeitet von bbprogger am Sa, Aug 23, 2008 11:25, insgesamt 2-mal bearbeitet
The_Nici |
Do, Aug 21, 2008 17:54 Antworten mit Zitat |
|
---|---|---|
Mach mal die Kamera Global, vielleicht hilft das. | ||
bbprogger |
Do, Aug 21, 2008 17:55 Antworten mit Zitat |
|
---|---|---|
Nun ja...
Ganz oben steht Code: [AUSKLAPPEN] GLOBAL light,kamera
Daran lag es nicht. |
||
FireballFlame |
Do, Aug 21, 2008 18:07 Antworten mit Zitat |
|
---|---|---|
Möglicherweise liegt das an den Kollisionsprüfungen? | ||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
bbprogger |
Do, Aug 21, 2008 18:11 Antworten mit Zitat |
|
---|---|---|
Ich habe alle Kollisionsprüfungen weggenommen aber trotzdem springt er nicht zurück. | ||
FireballFlame |
Do, Aug 21, 2008 22:42 Antworten mit Zitat |
|
---|---|---|
Tja... testen kann ich hier grad nix, weil das Archiv nicht funzt...
Aber bist du sicher, dass du nicht irgendwo "kamera" und "spieler" verwechselt hast? Mir kommt der Code nämlich bei genauerer Betrachtung grad irgendwie komisch vor ... die Kamera ist an den Spieler geheftet und bewegt sich nicht einzeln, kann aber trotzdem "zurückgesetzt" werden? Sie scheint eine 3rd-person-Kamera zu sein, dreht sich aber nie um den Spieler, sondern um sich selbst? ... |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
bbprogger |
Fr, Aug 22, 2008 12:53 Antworten mit Zitat |
|
---|---|---|
Die Kamera ist das Child-Objekt des Spielers.
Man kann sie aber manuell unabhängigt vom Spieler drehen (das geht). Und jetzt soll sie auf eine Anfangs-Position springen. Das geht mit Code: [AUSKLAPPEN] Positionentity kamera,0,0,0 auf 0,0,0 also gleich Spieler es geht auch mit Code: [AUSKLAPPEN] Positionentity kamera,0,5,0 und Code: [AUSKLAPPEN] Positionentity kamera,0,0,-20 aber nicht mit Code: [AUSKLAPPEN] Positionentity kamera,0,5,-20 P.S.: Die Sache mit dem Archiv ja der EWETEL Server spinnt. Ich werds noch mal versuchen. |
||
bbprogger |
Sa, Aug 23, 2008 11:26 Antworten mit Zitat |
|
---|---|---|
Jaaaaa
Jetzt könnt ihr euch die Dateien runterladen. |
||
Der_SchläferBetreff: ?? |
Sa, Aug 23, 2008 19:51 Antworten mit Zitat |
|
---|---|---|
Kapier ich nich... was willst du machen?
[EDIT] Ich habe bei der UpdateP()-Funktion Code: [AUSKLAPPEN] If KeyDown(18) Then PositionEntity kamera,0,5,-20
reingeschrieben und die kamera ist gesprungen. |
||
bbprogger |
So, Aug 24, 2008 0:40 Antworten mit Zitat |
|
---|---|---|
Genauso
Code: [AUSKLAPPEN] If KeyDown(18) Then PositionEntity kamera,0,5,-20 hab ich es auch probiert aber die Kamera springt nur 1xkurz und irgendwo hin. |
||
Übersicht BlitzBasic Blitz3D
Powered by phpBB © 2001 - 2006, phpBB Group