Mesh stoppen und wieder nach oben

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

lukasimgruet

Betreff: Mesh stoppen und wieder nach oben

BeitragSa, Apr 03, 2010 12:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Problem ist, ich möchte das ein Mesh auf der y achse nach unten fährt, und auf einer bestimmten höhe wieder nach oben geht, kann mir bitte jemand helfen?

Code: [AUSKLAPPEN]

Graphics3D 1600,900,0,2
SetBuffer BackBuffer()

Global Cam = CreateCamera()
MoveEntity Cam,0,20,0
CameraRange cam,1,40000

Global camera
Global light

terrain = LoadMesh("berg.3ds")
PositionEntity terrain, 0,0,0
ScaleMesh terrain, 0.1,0.1,0.1
TurnEntity terrain,0,0,0
terrain_tex= LoadTexture("texture.bmp")
EntityTexture terrain, terrain_tex

haus = LoadMesh("haus.3ds")
PositionEntity haus,1000,2,450
ScaleEntity haus,0.004,0.004,0.004

haus2 = LoadMesh("haus2.3ds")
PositionEntity haus2,700,2,170
ScaleEntity haus2,0.02,0.02,0.02

haus3 = LoadMesh("haus.3ds")
PositionEntity haus3,800,2,350
ScaleEntity haus3,0.004,0.010,0.004
RotateEntity haus3,0,90,0

haus4 = LoadMesh("haus.3ds")
PositionEntity haus4,1100,2,350
ScaleEntity haus4,0.004,0.020,0.004

haus5 = LoadMesh("haus.3ds")
PositionEntity haus5,950,2,350
ScaleEntity haus5,0.008,0.004,0.008
RotateEntity haus5,0,180,0

droid = LoadMesh("droid.3ds")
PositionEntity droid,1000,2,500
ScaleEntity droid,1,1,1
RotateEntity droid,0,180,0

xwing = LoadMesh("media/x wing.3ds")
PositionEntity xwing, 1050,2,500
ScaleEntity xwing,0.75,0.75,0.75

corvette = LoadMesh("media/corvette.3ds")
PositionEntity corvette,0,2000,0
ScaleEntity corvette,1,1,1

würfel= CreateCube()
PositionEntity würfel, 0,300,0
ScaleEntity würfel,1,1,1

skytex = LoadTexture("sky2.jpeg",1+8+16+32)
sky = CreateSphere(64)
FlipMesh sky
ScaleEntity sky,24000,18000,24000
EntityTexture sky,skytex
MoveEntity sky,0,0,0

Light = CreateSphere(5)
Spot = CreateLight(2,Light)
ScaleEntity Light,10,10,10
EntityColor Light,225,225,0
PositionEntity Light,0,2000,1000
Repeat

  If KeyDown(205) = 1 Then TurnEntity cam, 0, - 1, 0
   If KeyDown(203) = 1 Then TurnEntity cam, 0, 1, 0
   If KeyDown(208) = 1 Then MoveEntity cam, 0, 0, - 2
   If KeyDown(200) = 1 Then MoveEntity cam, 0, 0, 2

      If  KeyHit(57) = 1 Then  enable = 1 - enable
   WireFrame enable

MoveEntity corvette,0,-1,0

  If EntityY#(corvette)=300 Then MoveEntity corvette,0,500,0

UpdateWorld
RenderWorld
   
   Text 0,0,"BETA V.0.1 TEST "
   Text 0,20,"Trisrendered: " + TrisRendered()
        Text 0, 40, "X Position: " + EntityX#(cam)
        Text 0, 60, "Y Position: " + EntityY#(cam)
        Text 0, 80, "Z Position: " + EntityZ#(cam)
   Flip 0
Forever


Das einzige was geschieht ist das der Mesh zittert mehr nicht.

ozzi789

BeitragSa, Apr 03, 2010 13:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar weil du "MoveEntity corvette,0,-1,0" immer aufrufst!

Hier ein Pseudocode, sollte dir erklären wies geht Wink
mfg

Code: [AUSKLAPPEN]


y#=0
status=0

While Not KeyHit(1)
   Cls
   
   If status=0
      y#=y#+0.1
   Else
      y#=y#-0.1
   EndIf

   If y#>300
   status=1
   EndIf
   
   If y#<0
   status=0
   EndIf

   Text 0,0,y#
   Flip 60
Wend
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

lukasimgruet

BeitragSa, Apr 03, 2010 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
versteh ich nicht ganz^^
 

PacMani

BeitragSa, Apr 03, 2010 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ganz einfach: Du legst eine zusätzliche Variable namens "status" an. Wenn status=1 ist, fährt das Ding nach unten. Wenn die Y-Koordinate dann kleiner als -300 ist, änderst du den status auf 0.
Dann ist der status 0 und solange er das ist, fährt das Mesh nach oben. Ist die Y-Koordinate dann größer als 300, wird der status wieder auf 1 zurückgesetzt und das ganze wiederholt sich.
 

lukasimgruet

BeitragSa, Apr 03, 2010 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Beitrag
  • Zuletzt bearbeitet von lukasimgruet am Do, Apr 13, 2023 12:26, insgesamt einmal bearbeitet

ozzi789

BeitragSa, Apr 03, 2010 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein für das Mesh machst du eine Variable namens Status, der Code ist doch schon da oben Rolling Eyes
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

lukasimgruet

BeitragSa, Apr 03, 2010 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
das einzige was geschieht ist, der bildschirm ist schwarz und links oben stehen zahlen.
 

mDave

BeitragSa, Apr 03, 2010 15:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist ja auch nur ein Pseudocode.

ozzi789

BeitragSa, Apr 03, 2010 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Code zeigt dir nur wie man eine Variable in dem Range 0 -300 rauf und runter fahren lässt.
Dies nun in deinem Code einzubauen ist dein Teil, sonst lernst du ja nichts Wink

Vorallem weil niemand dein Code ausführen kann, da man mühsam deine Models zusammensuchen müsste um es zu testen.


edit: 2500er Beitrag *<: D
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

lukasimgruet

BeitragSa, Apr 03, 2010 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Beitrag
  • Zuletzt bearbeitet von lukasimgruet am Do, Apr 13, 2023 12:26, insgesamt einmal bearbeitet

ozzi789

BeitragSa, Apr 03, 2010 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hat nichts mit dumm zu tun, ist ja relativ das Ganze.
Mein Tipp an dich, arbeite diverse Tutorials durch, dann setzt dich wieder drann Wink
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

PacMani

BeitragSa, Apr 03, 2010 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Global NachUntenBewegen = True
Repeat
   
   If KeyDown(205) = 1 Then TurnEntity Cam, 0, - 1, 0
   If KeyDown(203) = 1 Then TurnEntity Cam, 0, 1, 0
   If KeyDown(208) = 1 Then MoveEntity Cam, 0, 0, - 2
   If KeyDown(200) = 1 Then MoveEntity Cam, 0, 0, 2
   
   If  KeyHit(57) = 1 Then  enable = 1 - enable
   WireFrame enable
   
   If NachUntenBewegen=True Then
      MoveEntity corvette,0,-1,0
   Else
      MoveEntity corvette,0,1,0
   End If
   
   If EntityY#(corvette)=300 Then NachUntenBewegen=False
   If EntityY(corvette)=500 Then NachUntenBewegen=True
   
   UpdateWorld
   RenderWorld
   
   Text 0,0,"BETA V.0.1 TEST "
   Text 0,20,"Trisrendered: " + TrisRendered()
   Text 0, 40, "X Position: " + EntityX#(Cam)
   Text 0, 60, "Y Position: " + EntityY#(Cam)
   Text 0, 80, "Z Position: " + EntityZ#(Cam)
   Flip 0
Forever


Ich würde übrigens bei weitem keine so riesigen Werte nehmen wie momentan...
CameraRange x,40000 ist doch etwas übertrieben o_O
Und: Kann man sich "ScaleEntity corvette,1,1,1" nicht sowieso sparen?

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group