Der Threadtitel sagt's eigentlich schon aus. Ich habe eine Sprunganimation für die Bewegung/das Schauen nach links und für die Bewegung/das Schauen nach rechts. Nur wie frage ich ab, welcher Sprite (also z.B. spr_run_left) gerade "benutzt" wird?
Abfragen in welche Richtung ich schaue/mich bewege
-
-
Wir stehen zusammen und wir fallen zusammen
-
Wenn du wirklich wissen willst, welches Sprite du gerade verwendest, dafür gibt es die Variable "sprite_index".
-
Der Code funktioniert soweit, bis auf dass wenn ich nach links schaue, immernoch nach rechts springe, bzw. die Sprunganimation, die für den Sprung nach rechts ist.
EDIT:
Habe das ganze mit
gelöst!
Trotzdem danke :).
Jetzt gibt es allerdings ein anderes Problem. Die Sprunganimation sollte natürlich so lange bleiben, wie man in der Luft ist, und nicht nach drücken nach rechts im Sprung abbrechen. Außerdem sollte man in die Ausgangsposition zurückkehren, wenn man wieder auf dem Boden landet. Jemand noch 'ne Idee dafür?Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Luchs08 ()
-
also wenn ich das jetzt richtig verstanden habe, dann willst du , dass sich der sprite nicht in den laufenden verwandelt, wenn du in der luft nach rechts drückst...
dazu musst du einfach an der stelle an der du den sprite in den laufenden sprite änderst eine abfrage machen, ob er am boden ist
... also mit if there is a collition at a position und nur dann den sprite ändern
hoffe das hilft dir =)
gruß
kopakoDieses Kind wird ein neues Reich gründen. Es wird Frieden stiften, das Recht aufrichten ...
Von diesem kleinen Kind geht Frieden aus und Freude und Liebe. -
Meinst du Sprung Sprites'?
Das ganze löse ich immer so:
Create
Step
GML-Quellcode
- if keyboard_check(vk_right) { right = 1; }
- if keyboard_check(vk_left) { right = 0; }
- if place_free(x,y+1) { jump = 1; } else { jump = 0; }
- if right = 1 and jump = 0 { sprite_index = spr_right; }
- if right = 1 and jump = 1 { sprite_index = spr_jump_right; }
- if right = 0 and jump = 0 { sprite_index = spr_left; }
- if right = 0 and jump = 1 { sprite_index = spr_jump_left; }
Bei mir klappt das perfekt! -
ja so kann man es acuh machen, aber das is ja auch nur fürs nach rechts gehen...
naja und wenn man auch noch links einbaut wird es doch ziemlich komplex im vergleich zu ner simplen abfrage vor dem ändern des sprites^^Dieses Kind wird ein neues Reich gründen. Es wird Frieden stiften, das Recht aufrichten ...
Von diesem kleinen Kind geht Frieden aus und Freude und Liebe. -
Nach einigem hin und her bin ich auf das:
GML-Quellcode
- if sprite_index=spr_jump_left and vspeed=0 and collision_point(x, y+16, obj_megaman, false, false)
- {
- if! place_free(x,y+16)
- {
- sprite_index=spr_megaman_left
- }
- }
- if sprite_index=spr_jump_right and vspeed=0 and collision_point(x, y+16, obj_megaman, false, false)
- {
- if! place_free(x,y+16)
- {
- sprite_index=spr_megaman_right
- }
- }
- if sprite_index=spr_jump_left and vspeed>0 and collision_point(x, y+16, obj_megaman, false, false)
- {
- if! place_free(x,y+16)
- {
- sprite_index=spr_run_left
- }
- }
- if sprite_index=spr_jump_right and vspeed>0 and collision_point(x, y+16, obj_megaman, false, false)
- {
- if! place_free(x,y+16)
- {
- sprite_index=spr_run_right
- }
- }
gekommen, was allerdings immer noch nicht funktioniert :/. Nach dem Sprung sollte man halt - je nachdem wie schnell man ist - entweder in der rechts rennen/rechts stehen oder links rennen/links stehen animation sein. Allerdings bleibt man beim Aufkommen noch in der Sprunganimation. Weiß wer was ich da falsch mache? -
Kopako schrieb:
ja so kann man es acuh machen, aber das is ja auch nur fürs nach rechts gehen...
naja und wenn man auch noch links einbaut wird es doch ziemlich komplex im vergleich zu ner simplen abfrage vor dem ändern des sprites^^
Nein, ist es nicht. Das ist für beides. Denn ich kann genausogut schreiben:
Create
Step
GML-Quellcode
- if keyboard_check(vk_right) { right = 1; left = 0; }
- if keyboard_check(vk_left) { right = 0; left = 1; }
- if place_free(x,y+1) { jump = 1; } else { jump = 0; }
- if right = 1 and jump = 0 { sprite_index = spr_right; }
- if right = 1 and jump = 1 { sprite_index = spr_jump_right; }
- if left = 1 and jump = 0 { sprite_index = spr_left; }
- if left = 1 and jump = 1 { sprite_index = spr_jump_left; }
Oder auch:
Create
Step
GML-Quellcode
- if keyboard_check(vk_right) { richtung = 1; }
- if keyboard_check(vk_left) { richtung = 0; }
- if place_free(x,y+1) { jump = 1; } else { jump = 0; }
- if richtung = 1 and jump = 0 { sprite_index = spr_right; }
- if richtung = 1 and jump = 1 { sprite_index = spr_jump_right; }
- if richtung = 0 and jump = 0 { sprite_index = spr_left; }
- if richtung = 0 and jump = 1 { sprite_index = spr_jump_left; }
Ist alles das selbe.
EDIT:
Luchs08 schrieb:
Nach einigem hin und her bin ich auf das:
GML-Quellcode
- if sprite_index=spr_jump_left and vspeed=0 and collision_point(x, y+16, obj_megaman, false, false)
- {
- if! place_free(x,y+16)
- {
- sprite_index=spr_megaman_left
- }
- }
- if sprite_index=spr_jump_right and vspeed=0 and collision_point(x, y+16, obj_megaman, false, false)
- {
- if! place_free(x,y+16)
- {
- sprite_index=spr_megaman_right
- }
- }
- if sprite_index=spr_jump_left and vspeed>0 and collision_point(x, y+16, obj_megaman, false, false)
- {
- if! place_free(x,y+16)
- {
- sprite_index=spr_run_left
- }
- }
- if sprite_index=spr_jump_right and vspeed>0 and collision_point(x, y+16, obj_megaman, false, false)
- {
- if! place_free(x,y+16)
- {
- sprite_index=spr_run_right
- }
- }
gekommen, was allerdings immer noch nicht funktioniert :/. Nach dem Sprung sollte man halt - je nachdem wie schnell man ist - entweder in der rechts rennen/rechts stehen oder links rennen/links stehen animation sein. Allerdings bleibt man beim Aufkommen noch in der Sprunganimation. Weiß wer was ich da falsch mache?
Probiers mal mit meinem Code! -
Danke mit einigen Änderungen hat es geklappt!
-
ja ich sagte ja , man müsste es eben entsprechend ergänzen
schon klar, dass das richtig war... aber meiner meinung nach zu kompliziert.. egal .. hauptsache es geht jetzt
Dieses Kind wird ein neues Reich gründen. Es wird Frieden stiften, das Recht aufrichten ...
Von diesem kleinen Kind geht Frieden aus und Freude und Liebe. -
es gibt auch eine jump and run plattform (schon vorgefertigt) nachschauen.
-
Benutzer online 2
2 Besucher