Problem beim "Schräglaufen" im ActionRPG
Übersicht

SalvABetreff: Problem beim "Schräglaufen" im ActionRPG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi @ all,
Ich bastle mit einem Freund an einem Actionadventure im Stil von "Secret of Evermore", "Secret of Mana" etc. Nun ja, z.Z. sind wir dabei die Laufanimation (4WegeGrafik "optisch", aber 8Wege durch schräglaufen) zu programmieren. Allerdings gestalltet es sich enorm schwer die Figur Schräg laufen zu lassen, also wenn 2 Tatsten gleichzeitig gedrück werden. Bei uns läuft die doofe Figur dann immer erst nach oben und dann nach links, wenn man die beiden Tasten drückt. Es wäre spitze wenn es irgendwie eine Möglichkeit gäbe die Bewegung und die Animation parallel zueinander ablaufen zu lassen... hmm.... kann uns da jemand helfen? Im Ganzen Netz ist nirgens ein TUTORIAL zu finden, das eine 8Wege- Steuerung beschreibt. *verzweifel* PS: ich bin der Grafiker von uns beiden, also entschuldigt bitte meine etwas unfachmännischen Bezeichnungen^^ |
||
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
poste doch mal bitte den code | ||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich das richtig verstehe (und das ist nicht einfach ![]() if keydown(oben)
Wenn dem so ist macht es einfach in der Art:Code: [AUSKLAPPEN] ; bla elseif keydown(unten) ; bla elseif... if keydown(oben)
Wenn es das nicht ist, macht auch nichts ; bla endif if keydown(unten) ; bla endif usw. ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Digi_ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ihr benutzt wohl kein else if
wenn die figur in eine richtung gehen soll, überprüft ob nicht noch eine taste gedrückt wurde (nicht die entgegengesetzte) ->schräg sieht dann etwa so aus: schritte = links+rechts+runter+hinauf if schritte = 1 then normale schritte else if schritte>1 then schräglaufen else keine taste gedrückt endif zu schritte>1: if hinauf && links then schräg nach linkshinauf else if hinfauf && rechts then schräg nach rechtshinauf " runter && links... oder if hinauf && (links OR rechts) then if links then linkshinauf else rechtshinauf else if if runter && (links OR rechts) then if links then linksrunter else rechtsrunter Ich hoffe, du weisst was ich meine^^ (Ich weiss nicht ob es eine besser lösung gibt, ich würde es so machen...) edit: mache es so wie hubsi wenn du keine schräganimationen machst... |
||
- Zuletzt bearbeitet von Digi_ am Di, Jan 11, 2005 19:43, insgesamt einmal bearbeitet
SalvA |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Spikespine
Geht klar, da gibt es allerdings ein kleines Prob, wie gesagt ich bin mehr für die Grafiken zuständig und versteh daher noch nicht allzu viel vom Programmieren. Mein Kumpel übernimmt das und der hat blöderweise kein Internet (ja, solche Leute gibts heute noch -____- nörk!) Ich kann daher nur den Code hier posten, den ich fabriziert habe. Dieser Code ist allerdings nicht besonders ..ähm... naja, es sind besser gesagt 2 codes, einmal der für die animation und dann noch der für die Bewegung der Figur. Wie schon erwähnt ist der Code von meim Kumpel weitaus komplexer und leistungsfähiger, gehn tuts aber trotzdem nich 100%^^ naja, ich poste ihn trotzdem mal hier^^ So, das ist das Teil für ne einfache Animation, dass die Figur nach rechts läuft. XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Graphics 320,240,16,3 SetBuffer BackBuffer() Global Backgroundpic = LoadImage("Testscreen.bmp") Global hero = LoadAnimImage("laufgrafik f&s.bmp", 50, 50, 0, 28) MaskImage hero, 255, 000, 255 Repeat ;Laufgrafik nach rechts For charframe= 8To 13 ;Laufgrafik nach links ;For charframe= 22To 27 Cls MidHandle hero DrawBlock Backgroundpic, 0, 0 DrawImage hero, 200, 120, charframe Flip Delay 170 Next Forever XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Hier haben wir dann die Bewegungsengine: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Graphics 320,240,16,1 SetBuffer BackBuffer() ;Wenn einem die Steuerung nicht gefällt, kann man sie hier gern ändern. Const oben =200 Const unten =208 Const links =203 Const rechts=205 ;Grafiken laden Global Backgroundpic = LoadImage("Testscreen.bmp") Global hero = LoadAnimImage("Laufgrafik F&S.bmp", 50, 50, 0, 28) MaskImage hero, 255, 000, 255 ; check ob die Grafiken erfolgreich geladen wurden If hero=0 err1$="Can't Find Graphics Make Sure The Graphics Directory," EndIf ;Laufprogramm ; Create the timer to track speed frameTimer=CreateTimer(60) ; Your main screen draw loop hero_x = 160 hero_y = 120 heroframe= 14 While Not KeyHit(1) WaitTimer(frameTimer) ; Pause until the timer reaches 60 Cls If KeyDown(links) heroframe= 21 hero_x=hero_x-2 If hero_x<0 Then hero_x=0 EndIf If KeyDown(rechts) heroframe= 7 hero_x=hero_x+2 If hero_x>320 Then hero_x=320 EndIf If KeyDown(oben) heroframe= 0 hero_y=hero_y-2 If hero_y<0 Then hero_y=0 EndIf If KeyDown(unten) heroframe= 14 hero_y=hero_y+2 If hero_y>240 Then hero_y=240 EndIf Cls MidHandle hero DrawBlock Backgroundpic, 0, 0 DrawImage hero, hero_x, hero_y, heroframe Flip Wend End XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Ich hoffe du weißt was ich meine. @digi_ Thx für die gute Idee. Klingt tatsächlich nicht schlecht. Allerdings ist ja das problem, dass wir die Laufanimation nicht parallel hinbekommen. Nun ja, ich meld mich gleich wieder, wenn ichs ausprobiert habe. PS: Wenn so viel Interesse besteht, mal einen Code zu schreiben für solche Sachen (egal ob ihr das völlig eigennützig macht oder für mich jetzt als Hilfe), ich kann euch ein Tileset der Secret of Evermore Figur geben, damit ihrs testen könnt. |
||
SalvA |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sry doppelpost, geht aber an der Stelle nicht anders.
Ich muss noch erwähnen, dass die Laufanimation ja mittendrin aufhören muss, wenn der Spieler die Taste loslässt. Das ist auch ein riesen Pron -___- |
||
![]() |
Digi_ |
![]() Antworten mit Zitat ![]() |
---|---|---|
statusvariable
wenn die figur sich bewegt, stellst du die eine variable auf 1 (zb figurbew) wenn die figur sich nicht bewegt, und die variable auf 1 ist (ist wichtig wenn du andere animationen hast...), stellst du diese auf 0 und du änderst das bild der figur.. |
||
SalvA |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sry, aber es geht einfach nicht/ ich mach was falsch-___-
Mal weg von dem Schräglaufenthema und hin zu dem Ding mit der Laufanimation, die abbrechen soll, wenn ich die Taste loslasse. Wie soll ich das machen, dass einerseits die Tastenabfrage kommt, ob die Taste noch gedrückt wird und in der selben Zeit eine Schleife abläuft, welche die Animation generiert? Alles was ich auf den Schirm bekomme ist: Figur läuft zwar, aber die Animation wird erst abgebrochen, wenn die Schleife dafür durchgelaufen ist. Und das sieht blöd aus... Vom Prinzip her hab ich deine Lösung verstanden, aber ich kann sie nich durchführen, weil mir die Möglichkeit fehlt die Animation "während" des Laufens laufen zu lassen. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group