2016-07-07 19 views
2

Ich habe einen Charakter, der basierend darauf bewegt, wie viel der Analog-Stick eines Controllers geschoben wird. Ich möchte die Laufanimation des Charakters schneller oder langsamer machen, je nachdem wie schnell der Spieler läuft.Wie kann man die Animationsgeschwindigkeit bestimmter Skelett-Animationsspuren basierend auf der Geschwindigkeit festlegen?


Als Referenz ist hier der Charakter und die Elemente, die ich verbinden wollen:

The Walking Animation Körper - langsamer auf Geschwindigkeit basiert sollte animieren

enter image description here

Die Schwert-Arm-Animation für das Gehen - Animationsgeschwindigkeit sollte gleich Körper

sein

enter image description here

blinkend - nicht durch Geschwindigkeit betroffen

Blinking - not affected by speed


Bevor ich das Skelett verändert das Schwert-Arm-Animation zu trennen, ich diesen Code gemacht, was in Ordnung war, aber es scheint nicht möglich zu sein, Animationen zu mischen oder in Spuren zu setzen.

unter Schritt:

if jumping = false 
    if speed != 0 
     { 
     anim = "Walk" 
     frame += speed/8 
     } 
    else 
     { 
     anim = "Stand" 
     frame += 1 
     } 

Unter Draw:

draw_skeleton(spr_player, anim, "", frame, x, y - z, -facing, image_yscale, image_angle, image_blend, image_alpha) 

tl; dr Was ich brauche, ist in der Lage zu sein, diese Animationen auf Spuren haben, während zur gleichen Zeit das Gehen ermöglichen Animationen, um sich basierend auf der Geschwindigkeit bewegen zu können.

Antwort

0

Sie können jedem der verschiedenen Objekte eine andere image_speed geben und mit diesem Objekt image_index sehen, um welchen Frame der Animation es sich gerade handelt. image_speed() nimmt eine Dezimalzahl zwischen 0 und 1, wobei 0 bedeutet, dass der Bildrahmen sich nicht ändert, und 1, bei dem der Bildrahmen geändert wird, jeden Schritt. Ich benutze normalerweise 0.2. Sie können die Bildgeschwindigkeit von Körper und Arm berechnen, indem Sie multiplizieren, wie weit links oder rechts der Joystick (als Dezimalzahl) von der gewünschten Bildgeschwindigkeit ist, wenn sie ganz links oder rechts ist. Die Bildgeschwindigkeit der Augen muss sich nicht ändern. image_index() gibt den Index des aktuellen Animationsrahmens zurück. Wenn Sie Ihr draw_skeleton-Skript verwenden, übergeben Sie objectname.Image_Index, um den aktuellen Index des Sprites abzurufen. Hoffe, das funktioniert :)