Как мне сходиться туда-сюда между двумя числами? - PullRequest
1 голос
/ 04 августа 2011

Я пытаюсь оживить бегущего человека:

Кадры с 1 по 5 = человек, склоняющийся к бегу. Кадры с 6 по 15 = человек, выполняющий один шаг

frame = 1           
frame +=1         //frames progress forwards at rate of 1 frame 

function run(){
   if(frame>15){     //at frame 15: man has completed leaning into run and completed one 'running' cycle
       frame -=2      //frames now start to go backwards at rate of (1-2=)-1 frame
       if(frame<6){   //until they reach frame 6 (beginning of running animation)
           frame +=2  //frames start to progress forwards again at rate of (2-2+1=)+1 frame again

Мой метод действительно плох и кажется, что он способен двигаться вперед и назад только ОДИН РАЗ между 15 и 6.

Кто-нибудь знает, как я могу бесконечно прыгать между этими двумя числами?

Ответы [ 2 ]

6 голосов
/ 04 августа 2011

После достижения кадра = 15 и начала поездки вниз, вы попадаете в условие (14), где ни одно из ваших утверждений IF не соответствует действительности.Таким образом, ваш кадр не увеличивается и не уменьшается.Застрял.

Возможно, лучшим решением было бы сохранить переменную myDirection, которая периодически переключается между 1 и -1.То есть, установите myDirection = -1, когда вы нажмете 15, и установите myDirection = 1, когда вы нажмете 6. Тогда ваш итеративный оператор всегда может сказать frame = frame + myDirection, и он всегда будет делать что-то - вы никогда не застрянете, делаянет ничего.

2 голосов
/ 04 августа 2011

Хорошо, поэтому, используя полезные советы LesterDove + schnaader, я справился:

int step=1

function run(){
    frame += step
    if(frame>15){ step = -1}
    if(frame<6){ step = 1}
}

, и это отлично работает, ребята.Еще раз спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...