滑步只跟步長有關,就是一輪人物行走(或跑步)實際移動的像素。無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
當然國產游戲大多做的不好。大多數根本不去認真做人物行走的播放程序,簡單一幀幀播放動畫,並隨意移動小人在地圖上的位置了事。無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
防止滑步又可以隨意改變人物移動速度的方法是這樣的:無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
將走路的程序用步長和步速兩個量來控制。步長必須定死,按做出來的圖片中小人一組動畫下來,移動的像素為准。無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
步速是任意的,可以用游戲每幀或每 1/100 秒,人物移動的像素數來表示(可以是小數,比如每幀刷新移動 1.2 個像素)。無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
簡化講解,我以橫版水平移動走路舉例:(斜視角可以類推)無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
假設步長為 step(pixel),步速為 speed(pixel/frame),人物行走動畫幀數為 n(frame)。無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
注: 其中 step 和 speed 可以是小數; n 是整數。 以下運算全部是浮點運算,真實游戲酌情考慮用定點數。無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
現在要把人物從坐標 0 移動到 100。無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
我們可以算出,這個過程是需要 100/speed 幀來完成的。無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
那麼第 i 幀畫面,人物在的位置:無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
pos=i*100/speed無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
這個時候,需要畫第幾幀圖象呢?無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
首先我們需要知道第 i 幀畫面,也就是 pos 這個位置,人物已經走了t=|pos/step| 步 (t 取整了);無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
我們的小人正在走在第 t+1 步的 m=(pos-t*step) * 100% 時刻m 是一個 0~1 之間的數字。無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
f=|n*m| 就是我們在此時刻需要畫的行走圖片幀了。無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
加快行走速度,無非是加快了頻率,不可能導致滑步的,因為一步邁出的距離根本不會變。無線論壇[http://www.J2ME.com.cn/bbs]
無線論壇[http://www.J2ME.com.cn/bbs]
ps. 對於跑步、有騰空,輕微滑步是允許的,所以可以適當加大步長是允許的。