物件就無法行走,今天我們不談語法, 偏重在學習邏輯設計上,
以下是 遊戲設計碰撞時, 可能需要的方法:
1. 當碰撞時,產生反作用力 如果你產生行走的 power=1.2 反作用力 power = -1.2
一加一減相抵消
2.另一作法是控制住你的變數 , 當碰撞時就鎖住你的 方向 變數與加速度
舉個例子,你power = 1.2 xspeed +=power ; 則當發生碰撞時,
power = 0 ; 產生的加速 xspeed = 0 ;
3.第三種作法是 一般國外做遊戲碰撞常用的邏輯, 跟 第2點提到很像
它是以你物件下一步要走的位置,來判斷 是否你下一步要走到的位置
是否與物件發生碰撞
舉個例子;
物件在 (x ,y ) , 你下一步要往左走 , 也就是 (x -1 , y) , 我們事先將下一步要走的
(x-1, y)座標, 與下一步會碰撞到的物件 做偵測
假設下一步(x-1, y) , 在(x-1, y)並沒有障礙物 , 則可以work
若否 , 則不work !
不管是上面那一種方法 勢必都要以你要物件碰撞的方向去偵測
舉個例子 :
物件座標是(x , y) , 它的左碰撞點是在 (x- 20 , y ) ;20只是假設
表示 碰撞點在你物件的左方座標 (用該座標去偵測與邊界是否碰撞
或是 用 左物件與物件 去碰撞偵測 偵測是否左方發生碰撞)
4. 再來談談碰撞語法
flash 內建的碰撞 hitTestObject 這是一個很"陽春"的碰撞
它有一個很大的缺點 就是它碰撞是以 物件元件的藍色外框邊界做為判斷
假設你有一個圓形的物件 要跟正方體碰撞 還未碰到圓形就顯示碰撞了
因為圓物件外框是以四方藍色邊界所圍起來 , 當碰到元件邊框時就產生
碰撞
而且 如果你物件是中空的情況, 你要偵測的物件又在物件裡, 那更是糟糕
所以為了解決這問題 在國外早就有人把完美的碰撞法
寫出來給大家使用, 是一種 以"像素"偵測"像素"法來偵測碰撞 ,就再也不
會有形狀偵測上的問題
- 留言者:
- Email:
- 網址:
- 日期: 2010-10-12 11:07:27
供個好網站來參考~感謝~
沒有留言:
張貼留言