dynamische felder um figur ?
Übersicht

![]() |
biggicekeyBetreff: dynamische felder um figur ? |
![]() Antworten mit Zitat ![]() |
---|---|---|
hey,
folgende situation: 1 figur steht auf einer plane. um sie herum und auch an ihrer position sollen 5*5 objekte positioniert sein. siehe bild1 bewegt sich nun die figur nach vorne (auf dem bild nach oben) so sollen die nun mehr als 2 felder entfernten objekte an freie stellen in diesem raster, also die felder oberhalb der anderen, verschoben werden. so soll immer gewährleistet sein das sich die figur in der mitte der 5*5objekte befindet. es sollen aber nicht einfach alle objekte mitverschoben werden. bild: wie lässt sich sowas realisieren? bin für jeden ansatz dankbar gruß key |
||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiss nicht ob ich Dich richtig verstanden habe, aber kuck Dir mal DIES HIER an. Ist zwar 2d aber da werden um den Spieler auch blöcke gezeichnet. | ||
Play Satyr! |
![]() |
biggicekey |
![]() Antworten mit Zitat ![]() |
---|---|---|
das problem dabei ist ja das die ganzen felder einfach an der neuen position gezeichnet werden. so solls nicht sein. nur die felder welche einen bestimmten "radius" verlassen sollen an die freien positionen in diesem "radius" | ||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vorgehen:
Wenn Figur nach oben bewegt wird: - speichere die unterste Reihe in einem temporären array. - kopiere beginnend bei der vorletzten Reihe alle reihen einen Index weiter nach unten. ( Beispiel map(x,5) = map x,4 ; x durchiterieren, statt 5 und 4 eine Zählvar per for ... step-1 ...next iterieren.) - speichere das die temporäre Reihe in die oberste Reihe. Sollte es dir um die direkten Objektkoordinaten gehen für 3d kannst du die analog (mit einem Faktor für den Abstand) berechnen und dann die entities positionieren. Das vorgehen für alle anderen Richtungen ist identisch, nur der Inhalt des temp.arrays (Zeile oder Spalte) und die Richtung in der iteriert wird ändert sich. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
biggicekey |
![]() Antworten mit Zitat ![]() |
---|---|---|
bei mir hat das mit den arrays speichern nicht so geklappt wie ich wollte. dachte ich hätte nen ansatz aber da waren immer die arays out of bounds und ob ich den zu 3d übertragen hätte können wäre ne andere frage gewesen.
habe dann komplett anderen ansatz gestartet. erfüllt seinen zweck doch kommt mir etwas umständlich vor. wahrscheinlich nicht die beste variante. wer verbesserungen oder alternativen hat bitte schreiben. besonders über ein beispiel von dir bladerunner würd ich mich freuen. danke erstmal gruß key Code: [AUSKLAPPEN] Graphics3D 800,600,16,2 SetBuffer BackBuffer() WBuffer 0 Global cam = CreateCamera() MoveEntity cam,0,100,0 Dim blub(8,8) For sx = 0 To 8 For sz = 0 To 8 bmesh = CreateCube() ScaleEntity bmesh,10,1,10 PositionEntity bmesh,sx*64,0,sz*64 ;EntityFX gmesh,1+16+2 blub(sx,sz) = bmesh Next Next PositionEntity cam,EntityX(blub(4,4)),450,EntityZ(blub(4,4)) TurnEntity cam,90,0,0 cube=CreateCube(cam) MoveEntity cube,0,0,450 ScaleEntity cube,5,5,5 EntityColor cube,0,255,0 Global fps_frames,fps_ms,fps_anzeige# While Not KeyHit(1) If KeyDown(203) Then MoveEntity cam,-1,0,0 If KeyDown(205) Then MoveEntity cam,1,0,0 If KeyDown(200) Then MoveEntity cam,0,1,0 If KeyDown(208) Then MoveEntity cam,0,-1,0 For sx = 0 To 8 For sz = 0 To 8 If ((EntityX(cam)/64-EntityX(blub(sx,sz))/64) > 4.4) MoveEntity blub(sx,sz),9*64,0,0 ElseIf ((EntityX(cam)/64-EntityX(blub(sx,sz))/64) < -4.4) MoveEntity blub(sx,sz),-9*64,0,0 EndIf If ((EntityZ(cam)/64-EntityZ(blub(sx,sz))/64) > 4.4) MoveEntity blub(sx,sz),0,0,9*64 ElseIf ((EntityZ(cam)/64-EntityZ(blub(sx,sz))/64) < -4.4) MoveEntity blub(sx,sz),0,0,-9*64 EndIf If ((EntityZ(cam)/64-EntityZ(blub(sx,sz))/64) <.5 ) And ((EntityZ(cam)/64-EntityZ(blub(sx,sz))/64) > -.5 ) And ((EntityX(cam)/64-EntityX(blub(sx,sz))/64) <.5 ) And ((EntityX(cam)/64-EntityX(blub(sx,sz))/64) > -.5 ) EntityColor blub(sx,sz),255,0,0 EndIf Next Next UpdateWorld() RenderWorld() Text 0,0,EntityX(cam) Text 0,20,EntityZ(cam) Text 0,40,"FPS: "+util_fps() Flip 0 Wend End Function Util_Fps() fps_frames=fps_frames+1 If MilliSecs()-fps_ms >= 1000 Then fps_anzeige=fps_frames fps_frames=0 fps_ms=MilliSecs() EndIf Return fps_anzeige End Function |
||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group