遊戲邏輯設計 - 淺談碰撞

在flash學習過程中,也許你學習到許多語法,但你卻不知如何用它,在遊戲設計碰撞到
物件就無法行走,今天我們不談語法, 偏重在學習邏輯設計上,

以下是 遊戲設計碰撞時, 可能需要的方法:


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
請問是否可以提供一下國外寫好的碰撞的source code呢?或者是否可以提

供個好網站來參考~感謝~

沒有留言:

張貼留言