Ich sehe meine Kugel nicht^^

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Morpheus

Betreff: Ich sehe meine Kugel nicht^^

BeitragFr, Jun 16, 2006 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics3D 1280,1024,16,1
SETBUFFER BACKBUFFER()
camera=CreateCamera()
cx#=0
cy#=15
cz#=-10
RotateEntity camera,45,0,0
PositionEntity camera,cx,cy,cz
CameraRange camera,1,1000

light=CreateLight()
RotateEntity light,45,0,0

sphere=CREATESPHERE(32)
Global x#=0
Global y#=0
Global z#=0
EntityType sphere,1
EntityRadius sphere,1
PositionEntity sphere,x#,y#,z#
EntityShininess sphere,1


plane=CreatePlane()
plx#=0
ply#=-5
plz#=0
EntityType plane,1
EntityColor plane,0,100,0
PositionEntity plane,plx,ply,plz
ScaleEntity plane,10,10,10
EntityShininess plane,1

cylinder=CreateCylinder(32)
EntityType cylinder,1
EntityColor cylinder,255,0,0
PositionEntity cylinder,1,6,0
ScaleEntity cylinder,2,2,2
EntityShininess cylinder,1    
   
While Not KeyDown(1)
TurnEntity light,0.00694444444,0,0
If KeyDown(203)=1 Then x#=-0.1 MoveEntity sphere ,x#,0,0
If KeyDown(205)=1 Then x#=0.1 MoveEntity sphere ,x#,0,0
If KeyDown(208)=1 Then z#=-0.1 MoveEntity sphere,0,0,z#
If KeyDown(200)=1 Then z#=0.1 MoveEntity sphere,0,0,z#
If KeyDown(57) =1 Then MoveEntity sphere,x#,2,z#

If KeyDown (30) Then cz=cz+0.05 MoveEntity camera,0,0,cz
If KeyDown (44) Then cz=cz-0.05 MoveEntity camera,0,0,-cz


;Physikengine
MoveEntity sphere,x#,-0.25,z#
Collisions 1,1,2,3
UpdateWorld


RenderWorld
col=CountCollisions(sphere)
Text 0,0,"Kollision(en):"
For i=1 To col
Text 000,i*20,"Entity="+CollisionEntity(sphere,i)
Text 150,i*20,"Surface="+CollisionSurface(sphere,i)
Text 300,i*20,"Triangle="+CollisionTriangle(sphere,i)
Next
Flip
Wend
ClearWorld
End


Hier kann ich mit A/Y soviel zoomen wir ich will, ich sehe meine Kugel trotzdem nicht Confused. Das Springen funktioniert mit Space, aber ich wollte noch eine Beschleunigung beim Fall einbauen, und mich wohl überschätzt Confused.

Auch wenn mir jetzt schon eine Wahnsinns Insel voll Bäumen und Bloom-Effekt im Kopf rumschwimmt, so bin ich doch noch immer ein Noob.

EDIT: Das drehende Licht ist der Beweis, dass man auch als Anfänger schon einen primitiven Tag/Nachtwechsel hinkriegen kann Very Happy

MfG, Morpheus

Holzchopf

Meisterpacker

BeitragFr, Jun 16, 2006 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich als B3D Noob hab mich mal eben daran versucht und tatsächlich Shocked was hingekriegt, was man Lösung nennen könnte:

1. Du solltest die Plane nicht auch in Y-Richtung (also Höhe) skalieren. Das hat zur Folge, dass die Kugel von Beginn an im Plane drin liegt und daher nichtmehr kollidiert.

2. Für die Sphere Kollisionstyp 1 verwenden, für alles andere würd ich Kollisionstyp 2 nehmen. Collisions nicht vergessen Wink

3. Falls du auf Punkt 2 nicht verzichten kannst, dann musst du unbedingt einmal UpdateWorld ausführen, bevor du Collisions anwendest, sonst kann nämlich die Plane nicht verschoben werden (klingt komisch, scheint aber so zu sein Rolling Eyes ), was dann wieder die selben Folgen hat, wie das unter Punkt 1.

4. Collisions brauchst du nur einmal anzuwenden (vor der Schleife)

MfG
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

Morpheus

Betreff: Nur einmal springen...

BeitragSa, Jun 17, 2006 13:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics3D 1280,1024,16,1
SetBuffer BackBuffer()
camera=CreateCamera()
cx#=0
cy#=0
cz#=-10
RotateEntity camera,0,0,0
PositionEntity camera,cx,cy,cz
CameraRange camera,1,10000

light=CreateLight()
RotateEntity light,45,0,0

sphere=CreateCube() ;sphere!!!!
Global spherey#=-5
EntityType sphere,1
EntityRadius sphere,1
PositionEntity sphere,0,spherey,10
EntityShininess sphere,1


plane=CreatePlane()
EntityType plane,1
EntityColor plane,0,100,0
PositionEntity plane,0,-5,0
ScaleEntity plane,10,1,10
EntityShininess plane,1

cylinder=CreateCylinder(32)
EntityType cylinder,1
EntityColor cylinder,255,0,0
PositionEntity cylinder,4,-5,0
ScaleEntity cylinder,2,2,2
EntityShininess cylinder,1    
   
Collisions 1,1,2,2

EntityParent camera,sphere,1

sprung = 0
imsprung=0
      
While Not KeyDown(1);looooooooooooooooooooooooooooooooooooooooooooooop
x#=0
y#=0
z#=0

TurnEntity light,0.00694444444,0,0;Sonnenlicht

If KeyDown(203)=1 Then MoveEntity sphere ,-0.5,0,0
If KeyDown(205)=1 Then MoveEntity sphere ,0.5,0,0
If KeyDown(208)=1 Then MoveEntity sphere,0,0,-0.1
If KeyDown(200)=1 Then MoveEntity sphere,0,0,0.1
 
If KeyDown(57) And sprung = 0 Then MoveEntity sphere,0,1,0
If spherey>-5.0 Then sprung=1

If KeyDown (17) Then MoveEntity camera,0,0,0.1
If KeyDown (31) Then MoveEntity camera,0,0,-0.1

If KeyDown (30) Then MoveEntity camera,0,0.1,0
If KeyDown (44) Then MoveEntity camera,0,-0.1,0

;Physikengine
MoveEntity sphere,0,-0.25,0
UpdateWorld
RenderWorld
col=CountCollisions(sphere)
Text 0,0,"Kollision(en):"
For i=1 To col
Text 000,i*20,"Entity="+CollisionEntity(sphere,i)
Text 150,i*20,"Surface="+CollisionSurface(sphere,i)
Text 300,i*20,"Triangle="+CollisionTriangle(sphere,i)
Text 450,i*20,"Spherey= "+spherey
Next
Flip
Wend
ClearWorld
End

Ich schaffs einfach nicht, dass man nur einmal mit Space springen kann Sad.

MfG, Morpheus

garret

BeitragSa, Jun 17, 2006 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Sprungvariable einfügen. Bei Leertastenbetätigung Sprung auf 1 und nur wenn Sprung 0 ist wird der Sprung realisiert, d.h. darf ein neuer Sprung erfolgen.

Also:
If Keyhit(Leertaste) And Sprung=0 Sprung=1

If Sprung=1
Springen()
Sprung=0
EndIf


Einfach mal danach suchen, wie es in 2D realisiert wird.
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group