程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> j2me游戲步長算法

j2me游戲步長算法

編輯:J2ME
滑步只跟步長有關,就是一輪人物行走(或跑步)實際移動的像素。無線論壇[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. 對於跑步、有騰空,輕微滑步是允許的,所以可以適當加大步長是允許的。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved