Wie greig ich einen charakter zum laufen?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

black_threat

Betreff: Wie greig ich einen charakter zum laufen?

BeitragDo, Apr 08, 2004 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab die frage schon einmal gestellt aber keiner hat mir weitergeholfen.
Naja ich hab ein terrain mit einer highmap. Jetzt will ich ein mesh bewegen. Aber es funzt nicht. Die tuts helfen mir auch nicht weiter. Könnt ihr mir helfen?

Danke im voraus.
 

norc

BeitragDo, Apr 08, 2004 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
einerseits brauchst du ein animiertes charakter mesh - mit dem tool characterFX kann man die animationen machen, andererseits musst du schwerkraft einbauen, und kollision mit dem boden.
 

black_threat

BeitragDo, Apr 08, 2004 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
norc hat Folgendes geschrieben:
einerseits brauchst du ein animiertes charakter mesh - mit dem tool characterFX kann man die animationen machen, andererseits musst du schwerkraft einbauen, und kollision mit dem boden.


und wie baut man schwerkraft und kollision mit dem boden ein? Das find ich in keinen tutorial. Und kann ich die animationen nicht mit milkshape 3d machen?
 

INpac

BeitragDo, Apr 08, 2004 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
muss man den alles in tutorials finden???

kollision findet man in den meisten Tutorials (siehe auch meine tuts!)

damit lässt sich dann auch die Schwerkraft realisieren (einfach immer (wenn nicht kollidiert) mit translateentity absolut zur 3D-Welt nach unten bewegen)
 

kstadler

BeitragDo, Apr 08, 2004 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
hast du selber schon probiert herauszufinden, weshalb sich das Mesh nicht bewegen lässt ?

Es wurden ja schon einige Beispiele bei deinem 1. Thread genannt. Vielleicht siehst Du Dir auch mal das CastleDemo von mak an, welches mit Blitz3D mitinstalliert werden kann.

Dort sind die Sachen wie Collision, Animation enthalten. Natürlich kannst Du auch Milkshape für deine Animationen verwenden.

Ansonsten, zeig doch mal den Sourcecode.
 

black_threat

BeitragFr, Apr 09, 2004 9:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, ich kapier das nicht. Hier der Code:

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,1

SetBuffer BackBuffer()

terrain=LoadTerrain("heightmap.bmp")
text1=LoadTexture ("terrain text1.bmp")
EntityTexture terrain,text1
ScaleEntity terrain,50,290,50
ScaleTexture text1,50,50

cam=CreateCamera()
MoveEntity cam,1000,335,980
CameraRange cam,1,30000
CameraClsColor cam,40,140,255

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

While Not KeyHit(1)

RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0

MoveMouse 512,584

text3 = LoadTexture("text3.bmp")
firenut=LoadMesh( "firenut.b3d")
PositionEntity firenut,1000,330,1000
EntityTexture firenut,text3

If KeyDown(203) MoveEntity firenut,-.5,0,0
If KeyDown(208) MoveEntity firenut,0,-.5,0
If KeyDown(200) MoveEntity firenut,0,.5,0
If KeyDown(205) MoveEntity firenut,.5,0,0

EntityParent cam,firenut
PointEntity cam,firenut
 

RenderWorld

Flip

Wend

ClearWorld

End


Wie mache ich jetzt die schwerkraft, und warum bewegt sich mein mesh nicht?
 

kstadler

BeitragFr, Apr 09, 2004 10:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist immer noch das selbe wie im 1. Thread von Dir.

Dies sind die Punkte die mir gerade so auffallen: (Bitte durchlesen)
1. Während der Hauptschleife ladest Du jedesmal das Mesh "firenut.b3d". Das Mesh solltest Du vor dem Hauptloop laden, genau wie Du es mit der Heightmap machst !

2. Nachdem laden von "firenut.b3d" positionierst Du es ! Auch das solltest Du vor dem Hauptloop machen. Ansonsten bringt dir das MoveEntity firenut nicht besonders viel. Da nach dem Bewegen das Mesh wieder an dieselbe Position gebracht wird.

Hier mal ein Vorschlag, habs aber nicht getestet:
Code: [AUSKLAPPEN]

Graphics3D 800,600,32,1

SetBuffer BackBuffer()

terrain=LoadTerrain("heightmap.bmp")
text1=LoadTexture ("terrain text1.bmp")
EntityTexture terrain,text1
ScaleEntity terrain,50,290,50
ScaleTexture text1,50,50

cam=CreateCamera()
MoveEntity cam,1000,335,980
CameraRange cam,1,30000
CameraClsColor cam,40,140,255

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

text3 = LoadTexture("text3.bmp")
firenut=LoadMesh( "firenut.b3d")
PositionEntity firenut,1000,330,1000
EntityTexture firenut,text3

While Not KeyHit(1)

   RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0

   MoveMouse 512,584

   If KeyDown(203) MoveEntity firenut,-.5,0,0
   If KeyDown(208) MoveEntity firenut,0,-.5,0
   If KeyDown(200) MoveEntity firenut,0,.5,0
   If KeyDown(205) MoveEntity firenut,.5,0,0

   EntityParent cam,firenut
   PointEntity cam,firenut
 

   RenderWorld

   Flip

Wend

ClearWorld

End
 

black_threat

BeitragFr, Apr 09, 2004 11:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Yeah! es funzt!
@kstadler: Danke das du mir es so genau erklärt hast!

Edit: Kannst mir jetzt jemand möglichst einfach erklären mir man schwerkraft proggt? So das man zum beispiel springen kann.
 

.Yukito.

BeitragFr, Apr 09, 2004 12:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ich nehm mal was, was ich schon ma geschrieben habe....

tja.... am besten eine datenbank machen mit nem array... dann fügst du die objekte ein, die da von der gravity betroffen werden sollen. du speicherst darin den handle (y=0) und die momentane geschwindigkeit(y=1)

Code: [AUSKLAPPEN]
dim gravengine(100,1) ; 100 objekte mit handle und geschwindigkeit


dann läufst du mit nem loop den array durch...
ein bissl physik: ein objekt egal welchen gewichts beschleunigt um 9,81m/s² (hier in unserer breitengrad gegend (am äquator etwa 0,05 weniger))

Code: [AUSKLAPPEN]
gravengine(objid,1)=gravengine(objid,1)+9.81/FPS
positionEntity gravengine(objid,0), EntityX#(...), EntityY#(...)+gravengine(objid,1)+, EntityZ#(...)


dann solltest du gucken, ob das objekt inzwischen endlich mal am boden aufgeklatscht is... dann musst du die geschwindigkeit natürlich auf 0 setzen...

wenn du das ding jetzt springen lassen willst, setzt du den gravityspeed zum beispiel auf -5... dann wird das objekt kurzweilig nach oben beschleunigt. denn es wird ja immer ein kleiner teil abgezogen bis das ding wieder fällt...

Viel Glück Wink
Yukito
 

black_threat

BeitragFr, Apr 09, 2004 13:21
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, sieht vielfersprechend aus. Nur wie muss ich das genau machen kannst du mir vielleicht ein beispiel wo und wie ich das machen muss. oben is mein sourecode. Bitte wäre wirklich nett . Surprised
 

norc

BeitragFr, Apr 09, 2004 19:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics3D 800,600,32,1

SetBuffer BackBuffer()

terrain=LoadTerrain("heightmap.bmp")
text1=LoadTexture ("terrain text1.bmp")
EntityTexture terrain,text1
ScaleEntity terrain,50,290,50
ScaleTexture text1,50,50
entitytype terrain,2

cam=CreateCamera()
MoveEntity cam,1000,335,980
CameraRange cam,1,30000
CameraClsColor cam,40,140,255

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

text3 = LoadTexture("text3.bmp")
firenut=LoadMesh( "firenut.b3d")
PositionEntity firenut,1000,350,1000
EntityTexture firenut,text3
entitytype firenut,1

collisions 1,2,2,2

While Not KeyHit(1)

   RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0

   MoveMouse 512,584

   If KeyDown(203) MoveEntity firenut,-.5,0,0
   If KeyDown(208) MoveEntity firenut,0,-.5,0
   If KeyDown(200) MoveEntity firenut,0,.5,0
   If KeyDown(205) MoveEntity firenut,.5,0,0
translateentity firenut,0,-.25,0    ; schwerkraft

   EntityParent cam,firenut
   PointEntity cam,firenut
 
   updateworld()
   RenderWorld ()

   Flip

Wend

ClearWorld

End

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group