Kamera-Elastizität in 3D
Übersicht

![]() |
MegamagBetreff: Kamera-Elastizität in 3D |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo.
Man kann ein Raumschiff steuern, so wie in dem Beispiel XFighter. Also in alle Richtungen mit Drehungen. Wie schaffe ich es, dass die Kamera hinterherzieht? Eine Kamera-Elastizität, versteht ihr? Ich habe so viele Tage drüber nachgedacht, so viel Code geschrieben, einiges funktionierte gut, aber als ich es in das Spiel bauen wollte, ging es wieder nicht. Ich weiß nicht mehr, was ich tun soll. Ich dachte, ich schaffe es vielleicht diesmal alleine, aber nein. Ich brauche unbedingt eure Hilfe! |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hoi,
Also mit 3D habe ich mich nie großartig befasst, aber allgemein bekomm ich eine "Elastische" Bewegung hin, in dem ich ständig den Abstand zwischen zwei Objekten messe, den wert durch einen bestimmten andern wert dividiere (Davon hängt dann die geschwindigkeit ab, 10 sollte ein guter ausgangspunkt sein) und das objekt dann um diesen wert vorsetze. grüße, Smily |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genau das habe ich versucht (Übrigens mit Hilfe eines Codes von xpressive von irgendwo hier).
Hier ist er: Code: [AUSKLAPPEN] Graphics3D 800,600,0,2 : SetBuffer BackBuffer()
sollX# = 0 sollY# = 0 sollZ# = 15 istX# = 0 istY# = 0 istZ# = 20 cam = CreateCamera() soll=CreateCube() EntityColor soll,255,0,0 EntityAlpha soll,.5 ist=CreateSphere() While Not KeyHit(1) Cls ; UNSICHTBAREN CURSOR BEWEGEN If KeyDown(208) sollY = sollY - .2 If KeyDown(200) sollY = sollY + .2 If KeyDown(203) sollX = sollX - .2 If KeyDown(205) sollX = sollX + .2 If KeyDown(30) sollz = sollz - .2 If KeyDown(44) sollz = sollz + .2 ; SCHIFFPOSITION LANGSAM AUF CURSORPOSITION BEWEGEN istX = istX + (sollX-istX) / 16 ; <- JE GRÖSSER, DESTO TRÄGER istY = istY + (sollY-istY) / 16 istZ = istZ + (sollZ-istZ) / 16 PositionEntity soll,sollX,sollY,sollZ PositionEntity ist,istX,istY,istZ PositionEntity cam,EntityX(ist),EntityY(ist),EntityZ(ist)-15 UpdateWorld RenderWorld Flip Wend End Das läuft wunderbar, aber wenn ich das in mein Spiel einsetzte, geht nur noch die Z-Achse? |
||
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
vlt setzt du x und y noch irgendwo anders im code? | ||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
Chrise |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab mal schnell nen kleinen Code geschrieben. Vll hilft dir der ja was ![]() Code: [AUSKLAPPEN] Graphics3D 800,600,0,2
SetBuffer BackBuffer() timer=CreateTimer(25) Global camera_damping#=0.1 camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 fighter=CreateCube() camera_pivot=CreatePivot(fighter) PositionEntity camera_pivot,0,0,-10 While Not KeyHit(1) cam_x#=EntityX(camera) cam_y#=EntityY(camera) cam_z#=EntityZ(camera) fighter_x#=EntityX(fighter) fighter_y#=EntityY(fighter) fighter_z#=EntityZ(fighter) piv_x#=EntityX(camera_pivot,1) piv_y#=EntityY(camera_pivot,1) piv_z#=EntityZ(camera_pivot,1) move_x#=(piv_x#-cam_x#)*camera_damping# move_y#=(piv_y#-cam_y#)*camera_damping# move_z#=(piv_z#-cam_z#)*camera_damping# mxs=MouseXSpeed() mys=MouseYSpeed() TurnEntity fighter,mys/5,-mxs/5,0 RotateEntity fighter,EntityPitch(fighter),EntityYaw(fighter),0 TranslateEntity camera,move_x#,move_y#,move_z# AlignToVector camera,fighter_x#-cam_x#,fighter_y#-cam_y#,fighter_z#-cam_z#,3,camera_damping# RotateEntity camera,EntityPitch(camera),EntityYaw(camera),0 RenderWorld WaitTimer timer Flip 0 Wend End |
||
![]() |
Blackside |
![]() Antworten mit Zitat ![]() |
---|---|---|
vll hilft dir
Code: [AUSKLAPPEN] Function Curve#(current#,destination#,Curve)
current#=current#+((destination#-current#)/Curve) Return current# End Function ja auch etwas ![]() |
||
Hier sollte eigentlich eine Signatur stehen! |
![]() |
Megamag |
![]() Antworten mit Zitat ![]() |
---|---|---|
Chrise, das ist zwar nicht was ich wollte, aber die
Kameraführung ist so geil, dass ich die jetzt einfach mal nehme. Fettes danke (an alle) und fetten Credit für Chrise ![]() |
||
![]() |
Chrise |
![]() Antworten mit Zitat ![]() |
---|---|---|
lol, okay dann bin ich ja beruhigt ^^
Hatte nur froher mal das selbe Problem. (aja übrigens können Nebenwirkungen auftreten, wenn du exakt senkrecht nach oben oder unten schaust. Musst du eben mal schaun ob du da ne Lösung findest ![]() Danke übrigens, muss keiner oder wenn du unbedingt willst, kein fetter sein ^^ |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group