Kamera zurücksetzten

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

bbprogger

Betreff: Kamera zurücksetzten

BeitragDo, Aug 21, 2008 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Aug 21, 2008 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach mal die Kamera Global, vielleicht hilft das.
 

bbprogger

BeitragDo, Aug 21, 2008 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun ja...
Ganz oben steht Code: [AUSKLAPPEN]
GLOBAL light,kamera


Daran lag es nicht.

FireballFlame

BeitragDo, Aug 21, 2008 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Aug 21, 2008 18:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe alle Kollisionsprüfungen weggenommen aber trotzdem springt er nicht zurück.

FireballFlame

BeitragDo, Aug 21, 2008 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 22, 2008 12:53
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Aug 23, 2008 11:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Jaaaaa Very Happy Very Happy

Jetzt könnt ihr euch die Dateien runterladen.

Der_Schläfer

Betreff: ??

BeitragSa, Aug 23, 2008 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Confused
 

bbprogger

BeitragSo, Aug 24, 2008 0:40
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group