MoveEntity Problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Flausch96

Betreff: MoveEntity Problem

BeitragDo, Mai 19, 2011 13:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Ich muss euch noch einmal mit einer Anfängerfrage nerven Laughing

Ich habe ein problem mit dem befehl moveentit.

BlitzBasic: [AUSKLAPPEN]
PositionEntity würfel,200,23,100
ScaleEntity würfel,3,3,3
MoveEntity Würfel,5,0,0


Mit dem Code müsste sich der Würfel eigentlich bewegen ! Macht er aber nich. Warum ?
könnt ihr mir Helfen ?

Xeres

Moderator

BeitragDo, Mai 19, 2011 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Kompletten Code mit Hauptschleife bitte. Wenn es genau so in der Hauptschleife steht: Was erwartest du anderes? Der Würfel wird immer wieder auf die Koordinaten zurück gesetzt und dann um 5 Einheiten bewegt -> sehr statisch.
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)

Flausch96

BeitragDo, Mai 19, 2011 13:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier ist der code (damit will ich kein spiel machen sondern mich mit den befehlen vertraut machen)

BlitzBasic: [AUSKLAPPEN]
Graphics3D 640, 480, 16, 1
SetBuffer BackBuffer()
camera = CreateCamera()
PositionEntity camera, 1, 1, 1
light = CreateLight()
RotateEntity light, 90, 0, 0

terrain = LoadTerrain("heightmaps\Map1\Map 1.bmp")
TerrainDetail terrain, 4000, True
ScaleEntity terrain, 1, 50, 1
grass_tex = LoadTexture("texturen\graßtextur.bmp")
EntityTexture terrain,grass_tex, 0, 1

While Not KeyHit(1)
If KeyDown(205) = 1 Then TurnEntity camera, 0, -1, 0
If KeyDown(203) = 1 Then TurnEntity camera, 0, 1, 0
If KeyDown(208) = 1 Then MoveEntity camera, 0, 0, -0.1
If KeyDown(200) = 1 Then MoveEntity camera, 0, 0, 0.1
x# = EntityX(camera)
y# = EntityY(camera)
z# = EntityZ(camera)
terra_y# = TerrainY(terrain, x#, y#, z#) + 5
PositionEntity camera, x#, terra_y#, z#
RenderWorld
Flip
Würfel = CreateCube()
PositionEntity würfel,200,23,100
ScaleEntity würfel,3,3,3
MoveEntity Würfel,5,0,0

Wend
End

Xeres

Moderator

BeitragDo, Mai 19, 2011 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Niemals, niemals etwas laden oder erstellen in der Hauptschleife! Du generierst immer neue Würfel ohne den alten zu löschen und müllst langsam aber sicher den Speicher voll - zur Bewegung siehe oben.
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)

Flausch96

BeitragDo, Mai 19, 2011 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, hab jetzt eine hauptschleife erstellt.
Hier der Code:

BlitzBasic: [AUSKLAPPEN]
Graphics3D 640, 480, 16, 1
SetBuffer BackBuffer()
camera = CreateCamera()
light = CreateLight()
Würfel = CreateCube()


Repeat
RotateEntity light, 90, 0, 0
terrain = LoadTerrain("heightmaps\Map1\Map 1.bmp")
TerrainDetail terrain, 4000, True
ScaleEntity terrain, 1, 50, 1
grass_tex = LoadTexture("texturen\graßtextur.bmp")
EntityTexture terrain,grass_tex, 0, 1
PositionEntity camera, 1, 1, 1
While Not KeyHit(1)
If KeyDown(205) = 1 Then TurnEntity camera, 0, -1, 0
If KeyDown(203) = 1 Then TurnEntity camera, 0, 1, 0
If KeyDown(208) = 1 Then MoveEntity camera, 0, 0, -0.1
If KeyDown(200) = 1 Then MoveEntity camera, 0, 0, 0.1
x# = EntityX(camera)
y# = EntityY(camera)
z# = EntityZ(camera)
terra_y# = TerrainY(terrain, x#, y#, z#) + 5
PositionEntity camera, x#, terra_y#, z#
RenderWorld
PositionEntity würfel,200,23,100
ScaleEntity würfel,3,3,3
MoveEntity Würfel,5,0,0
If KeyDown(1) Then End

RenderWorld
Flip
Wend
Forever


aber der würfel bewegt sich immer noch nicht.

Xeres

Moderator

BeitragDo, Mai 19, 2011 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast mich Missverstanden: Du brauchst keine Schleife um den gesamten Code.
Alles was du tun müsstest ist, Create & Position vor deiner Hauptschleife zu erledigen - ganz so, wie du es mit dem Terrain machst. Innerhalb der Schleife kommt dann nur noch MoveEntity.
Noch mal: PositionEntity verschiebt den Würfel auf eine absolute Position. Du kannst keine Bewegung sehen, wenn das in der Schleife steht.
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)
  • Zuletzt bearbeitet von Xeres am Do, Mai 19, 2011 14:11, insgesamt einmal bearbeitet

Flausch96

BeitragDo, Mai 19, 2011 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, funzt jetzt
(hast mir schon zu zweiten mal geholfen)

Lakorta

BeitragDo, Mai 19, 2011 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht ganz richtig. Das erste mal hattest du ihn nur missverstanden. Du hattest bereits eine (While-Wend) Hauptschleife. Er meinte du solltest das CreateCube aus deiner Hauptschleife rausnehmen und vor die Hauptschleife (vor das While bzw. vor das Repeat) schreiben, da du sonst diese Sachen immer wieder lädst und das Programm dadurch langsamer wird. 1-mal laden reicht Wink
---

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group