Wie greig ich einen charakter zum laufen?
Übersicht

black_threatBetreff: Wie greig ich einen charakter zum laufen? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() Yukito |
||
black_threat |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 . ![]() |
||
norc |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group