2011-08-04 42 views
1

我試圖動畫男人跑:我如何在兩個數字之間來回聚合?

幀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之間向後ONCE

有誰知道我怎麼能在這兩個數字之間無限期地反彈?

回答

6

在達到frame = 15並開始向下行程之後,您會遇到一個條件(14),您的IF語句都不爲真。所以你的框架既不增加也不減少。卡住。

一個可能的更好的解決方案是維護一個稱爲myDirection的變量,該變量定期在1和-1之間切換。也就是說,當你點擊15時,設置myDirection = -1,當你點擊6時,設置myDirection = 1。然後,你的迭代語句總是可以說frame = frame + myDirection,它總是會做一些事情 - 你永遠不會無所事事。

+0

啊,我知道在我的邏輯中有一個巨大的漏洞。 – tetris11

2

好了,使用LesterDove的+ schnaader的有用的提示我已經成功:

int step=1 

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

和它的作品偉大的球員。再次感謝!

+0

幹得好。注意你根本不需要'forward'布爾值,只需要在'if'語句內改變'step'即可。 – schnaader

+1

啊這簡化了一個helluvalot的東西。謝謝你 - 編輯 – tetris11

相關問題