3D-Welt

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Todeskop

Betreff: 3D-Welt

BeitragFr, Jan 05, 2007 12:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist es möglich eine Kugel zu machen (die welt) und den Spieler (camera)
darauf zu gravitieren.Also das es so wie in der realität eine welt gibt an die man dann angezogen wird. Also so das z.b translateentity camera,0,0,-1
nicht nach unten gezogen wird sonder immer an der erde egal ob man über kopf ist oder nicht. Hoffe die frage ist dieses mal deutlich formuliert.....

StepTiger

BeitragFr, Jan 05, 2007 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Terrain zu erstellen wird schwieriger als die Gravitation. Die kannst du nämlich mit Atan2 passend berechnen.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Todeskop

BeitragFr, Jan 05, 2007 13:27
Antworten mit Zitat
Benutzer-Profile anzeigen
die welt zu machen ist kein problem für mich da ich einfach ein rundes meshterrain in cybermotion machen kann aber wenn ich jetzt die welt hab wie
berechne ich das genau.

~edit~ könnte man nicht die komplette schwerkraft der erde nach bauen dazu gibt es doch bestimmt berechnungen und so was? also so das man ihrgentwie macht das die erde einen anzieht und eine 2te kugel um die erde macht dan noch einen druck daruf......so das ,dass springenn sehr realistich wirkt und so

5k41

BeitragFr, Jan 05, 2007 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde einfach einen Pivot erstellen, der der Bewegung, nicht jedoch dem mouselook folgt ( den wendest du dann direkt auf die cam an ) und jenen mit moveentity pivot,0,-1,0 nach unten ziehen.

MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

Todeskop

BeitragFr, Jan 05, 2007 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
ok ich werds bald dann mal probieren .....

Markus2

BeitragFr, Jan 05, 2007 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Du brauchst nur den Richtungsvector von deinem Spieler zu deinem Erdmittelpunkt ausrechnen und das setzt du dann bei Translate Entity ein .

Die "Erdanziehung" wirkt auf deinem Spieler so das er beschleunigt wird
also mußte dir Variablen machen für x,y,z die die Geschwindigkeit enthalten .
Pro Sekunde wird er um 9,81 m beschleunigt richtung Erdmittelpunkt .
beschleunigt x = Richtung x*9.81
beschleunigt y = Richtung y*9.81
beschleunigt z = Richtung z*9.81

Um das richtig auszurechnen mußt du die Zeit deiner Hauptschleife wissen
z.B. bei 50 FPS sind das 20 millisekunden bzw. 0.02 Sekunden .

beschleunigt x=beschleunigt x*0.020 * Masse
beschleunigt y=beschleunigt y*0.020 * Masse
beschleunigt z=beschleunigt z*0.020 * Masse

Geschwindigkeitx =Geschwindigkeitx + beschleunigt x
Geschwindigkeity =Geschwindigkeity + beschleunigt y
Geschwindigkeitz =Geschwindigkeitz + beschleunigt z

Und du mußt ne Funktion haben die den Maßstab von deiner Spielwelt
umrechnen kann in Meter .

Und dran denken das Geschwindigkeit jetzt in Meter die Sekunde ist .

Wenn du deinen Spieler jetzt 50 mal in der Sekunde bewegst
sind die Schritte also Geschwindigkeitx * (1/50)
 

Krümel

BeitragFr, Jan 05, 2007 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,
vor längerer zeit hatte ich ein ähnliches problem.
hab meinen sourcecode mal rausgekramt und aufs wesentliche reduziert...
evtl. hilfts,

viele Grüße.,
Krümel

Code: [AUSKLAPPEN]

Graphics3D 640,480,16,2

tex=CreateTexture(256,256)
ScaleTexture tex,0.1,0.1
SetBuffer TextureBuffer(tex)
Rect 0,0,128,128 : Rect 128,128,128,128
Flip

SetBuffer BackBuffer()

Scale=4

Obj=CreateCube()
ScaleEntity Obj,Scale,Scale,Scale
EntityTexture Obj,Tex
EntityType Obj,1

CameraPivot=CreateSphere(16)
MoveEntity CameraPivot,0,0,-Scale-4
EntityColor CameraPivot,255,0,0
EntityType CameraPivot,2

Camera=CreateCamera(CameraPivot)
MoveEntity Camera,0,0.5,-5

light=CreateLight(2)
MoveEntity light, 300,500,-500

Collisions 2,1, 2,1

While Not KeyHit(1)

   c=CountCollisions(CameraPivot)
   If c<>0
      AlignToVector CameraPivot,CollisionNX(CameraPivot,c),CollisionNY(CameraPivot,c),CollisionNZ(CameraPivot,c),2;, 0.9
   Else
      lx#=(EntityX(Obj)-EntityX(CameraPivot))
      ly#=(EntityY(Obj)-EntityY(CameraPivot))
      lz#=(EntityZ(Obj)-EntityZ(CameraPivot))
      TranslateEntity CameraPivot,lx,ly,lz
   EndIf

   If KeyDown(200) MoveEntity CameraPivot, 0, 0, 0.1
   If KeyDown(208) MoveEntity CameraPivot, 0, 0,-0.1
   If KeyDown(203) TurnEntity CameraPivot, 0, 2, 0
   If KeyDown(205) TurnEntity CameraPivot, 0,-2, 0

   UpdateWorld
   RenderWorld
   Flip
Wend
 

Todeskop

BeitragFr, Jan 05, 2007 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
joooo dankie das ist perfect

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group