camera objekt folgen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: camera objekt folgen

BeitragFr, Mai 20, 2011 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
hi, ja wie kann ich es machend as die camera sich dem objekt folgt,

wäre der cube nun ein char soll man ihn also nur von hinten sehen, die kamera muss sich also immer mitdrehen und automatisch so anordnen das sie hinter dem objekt ist und schräg von oben auf das objekt schaut. dieses geht ja auch nur wenn ich nun die camera drehe nunja sie dreht sich mit aber is natürlich nicht mehr hinter dem objekt. sondern ehr links oder rechts.

hier der code.

Code: [AUSKLAPPEN]
Graphics3D 640, 480
SetBuffer BackBuffer()

camera = CreateCamera()
PositionEntity camera, 0, 1, 0
EntityType camera , 1
light = CreateLight(1)
RotateEntity light, 90, 0, 0


char=CreateCube()
PositionEntity char, 3, 3, 3
EntityType char , 1

terrain= LoadMesh("terrain.3ds")
PositionEntity terrain, 0, 0, 0
EntityType terrain, 2

grass_tex = LoadTexture("0000.jpg")
EntityTexture terrain,grass_tex

Collisions 1, 2, 2, 2


While Not KeyHit(1)
   x# = 0
   y# = 0
   z# = 0
     a#=0
   If KeyDown(205) = 1 Then
      TurnEntity char, 0, -1, 0
      TurnEntity camera, 0, -1, 0
      a=a-1
   EndIf
   If KeyDown(203) = 1 Then
      TurnEntity char, 0, 1, 0
      TurnEntity camera, 0, 1, 0
      a=a+1
   EndIf
   If KeyDown(208) = 1 Then z# = - 0.1
   If KeyDown(200) = 1 Then z# = 0.1
   MoveEntity char, x#,-.1 , z#
   
   PositionEntity camera, EntityX (char),EntityY(char) +5, EntityZ(char)-10
   
   UpdateWorld
   RenderWorld
   col = CountCollisions(camera )
   Text 0, 0, "Kollision(en):"
   For i = 1 To col
      Text 000, i * 20, "Entity=" + CollisionEntity(camera , i)
      Text 150, i * 20, "Surface=" + CollisionSurface(camera , i)
      Text 300, i * 20, "Triangle=" + CollisionTriangle(camera , i)
   Next
   Flip

Wend
End

grafe

BeitragFr, Mai 20, 2011 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, dies kannst du mit EntityParent erreichen:
BlitzBasic: [AUSKLAPPEN]
Camera=CreateCamera()
PlayerCube=CreateCube()
EntityParent Camera,PlayerCube
PosititionEntity Camera,0,3,-6


mfg Grafe

Xeres

Moderator

BeitragFr, Mai 20, 2011 14:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Das kommt ein bisschen darauf an, wie sich die Kamera noch so verhalten soll, aber ich würde es wie folgt machen:
Du benutzt 2 Winkel und einen Radius um die Kamera zu Positionieren (WP: Kugelkoordinaten - nicht von Mathematik verwirren lassen, wichtig ist das Bild und wie die Koordinaten voneinander abhängen). Dann nur noch PointEntity um die Kamera immer auf den Spieler zeigen zu lassen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

John_Thym

Betreff: Scripts starten und beenden

BeitragFr, Mai 20, 2011 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich wollte einen player erstellen der ein lied abspielt dann wartet bis es zuende ist und dann das nächste abspielt

ich hab es bis jetzt mit delay gelöst wie geht es richtig ?

MFG John_Thym

Xeres

Moderator

BeitragFr, Mai 20, 2011 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
@John_Thym: Versucht, einen eigenen Thread auf zu machen? Probier es nochmal!
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

GearTechDE

ehemals 'KillerJo96'

BeitragSa, Mai 21, 2011 9:39
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo, ich habe das auch mit EntityParent gemacht. Aber so wie grafe das gemacht hat funktioniert es bei mir nicht. Und zwar wegen dem PositionEntity Camera..
Wenn ich bei Koordinate Y nicht 0 eingebe, bekomme ich den Fehler, memorie access violation.
Wenn sie auf 0 ist funktioniert alles fehlerfrei.

Wie kann ich jetzt die Y koordinate ändern, ohne das mein programm abstürzt??

Lg Killerjo96
Mit freundlichen Grüßen: GearTechDE

Xeres

Moderator

BeitragSa, Mai 21, 2011 9:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Code, Zeile, Fehler - so wie immer und bei jedem Problem - bitte.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

ewok1

Betreff: Re: camera objekt folgen

BeitragSa, Mai 21, 2011 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
die kamera muss sich also immer mitdrehen und automatisch so anordnen das sie hinter dem objekt ist und schräg von oben auf das objekt schaut.

wenn dein char eine .3ds datei ist dann versetze sie in deinem editor doch leicht nach vorn. Und dann kannst du für kamera und entity die selben x,z kordinaten eingeben und dann läuft dir der char immer gleich vor der kamera

Abenteurer036

BeitragDi, Mai 31, 2011 12:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder du machst es ganz einfach...

Code: [AUSKLAPPEN]
char=LoadMesh("char.3ds")
cam=CreateCamera(char)


Anschließend kannst du die Kameraposition immernoch mit RotateEntity und PositionEntity verändern.
New Project [4%]
Schinken Maker [100%]

GearTechDE

ehemals 'KillerJo96'

BeitragDi, Mai 31, 2011 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt fände ich mal interressant, welche die bessere Lösung wäre! ^^
Und zwar, ob es hier RAM Probleme gibt oder was auch immer.
Naja deswegen frag ich mich, warum sollte man es so wie Abenteurer machen, wenns dafür schon einen Befehl gibt?

Naja, was ist denn die bessere Variante?

MFG
Mit freundlichen Grüßen: GearTechDE

Xeres

Moderator

BeitragDi, Mai 31, 2011 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie meinen? Wofür gibt es schon einen Befehl?
Ob man beim erstellen der Kamera ein Parent-Objekt angibt oder EntityParent verwendet sollte so ziemlich egal sein, der Effekt ist ja exakt der selbe.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

GearTechDE

ehemals 'KillerJo96'

BeitragDi, Mai 31, 2011 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
ja der effekt schon, naja egal ... ich nehme aber lieber entityparent
Mit freundlichen Grüßen: GearTechDE

Mathias-Kwiatkowski

BeitragDo, Jun 09, 2011 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
EntityParent Camera,char

funktioniert = 0


nun hab ich es so gelöst, allerdings wenn sich der char dreht, is die camera nich hinterihm. wie realiesiere ich das?

hier der code

Code: [AUSKLAPPEN]
Graphics3D 1280,1024,32,1
SetBuffer BackBuffer()
camera = CreateCamera()
PositionEntity camera, 0, 50,0
EntityType camera , 1
RotateEntity camera, 45, 0, 0

light = CreateLight(1)
RotateEntity light, 90, 0, 0

Char = LoadMesh("data\char-goli.3ds")
PositionEntity Char , 0, 0, 50
EntityType Char , 1
ScaleEntity char,0.05,0.05,0.05










Collisions 1, 2, 2, 2



While Not KeyHit(1)
   x=0
   z=0
   
   If KeyDown(205) = 1 Then y=y-1
   If KeyDown(203) = 1 Then y=y+1

   If KeyDown(208) = 1 Then z = - 1
   If KeyDown(200) = 1 Then z = 1

   If KeyDown(74) = 1 Then
      z = - 1
      MoveEntity char,0,0,z
   EndIf
   If KeyDown(78) = 1 Then
      z = 1
      MoveEntity char,0,0,z
   EndIf


   RotateEntity char, 0,y,0
   
   MoveEntity char, 0,0,z
   
   PositionEntity camera,EntityX(char) , EntityY(char)+50,EntityZ(char)-50
   
      
   UpdateWorld
   RenderWorld
   
   mx = MouseX()
   my = MouseY()
   entity = CameraPick(camera, mx, my)

   col = CountCollisions(camera )
   
   a=GetKey()
   If a<>0 Then taste=a
   For i = 1 To col
      Text 000, i * 20, "Entity=" + CollisionEntity(camera , i)
      Text 150, i * 20, "Surface=" + CollisionSurface(camera , i)
      Text 300, i * 20, "Triangle=" + CollisionTriangle(camera , i)
   Next
   Text 0,i * 20,taste
   Text 0,i * 40,entity
   Text 0,i * 60,PickedX()
   Text 0,i * 80,PickedY()
   Text 0,i * 100,PickedZ()


   Oval mx - 5, my - 5, 5, 5, 1
   

   Flip

Wend
End

skey-z

BeitragDo, Jun 09, 2011 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mir gerade mal folgenden Code zusammen gebastelt und die Kamera folgt ohne Probleme der Kugel

Code: [AUSKLAPPEN]

Graphics3D 800, 600, 32, 0
SetBuffer BackBuffer()

SeedRnd MilliSecs()

cam = CreateCamera()
light = CreateLight()
plane = CreatePlane()
   EntityColor plane, 128, 128, 128

sph = CreateSphere(8)
   EntityParent cam, sph
   PositionEntity cam, 0, 2, -5
   
For i = 0 To 99
   cube = CreateCube()
      PositionEntity cube, Rand(-100,100), 0, Rand(-100, 100)
      ScaleEntity cube, Rnd(.5,2), Rnd(.5,2), Rnd(.5,2)
      EntityColor cube, Rand(255), Rand(255), Rand(255)
Next

Repeat
      
   If KeyDown(203) Then
      TurnEntity sph, 0, 1, 0
   ElseIf KeyDown(205)
      TurnEntity sph, 0, -1, 0
   EndIf
   
   If KeyDown(200) Then
      MoveEntity sph, 0, 0, 1
   ElseIf KeyDown(208) Then
      MoveEntity sph, 0, 0, -1
   EndIf
      

   RenderWorld
   
   Flip
   Cls
Until KeyHit(1)

End


Bei deinen Code positionierst du die Kamera immer nur auf der Z-Achse hinter dem Char
Code: [AUSKLAPPEN]
PositionEntity camera,EntityX(char) , EntityY(char)+50,EntityZ(char)-50

Du müsstest den Drehwinkel der Y-Achse nehmen und die Kamera auf der X- und Z-Achse positionieren sin, cos
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group