unityRPG遊戲攻擊的判定

在一個遊戲裏面,最重要的要數那些算法了。比如追擊AI算法,尋路算法。一個優質的算法能讓你的遊戲體驗更好。那麼在RPG遊戲裏面,我們玩家角色的普攻一般情況下,如果選擇的人物是那種劍士職業的(這裏打個比方),那麼我們應該讓他的普攻具有羣體效果。就像DNF鬼劍士那樣,只要在自己前方一定的範圍和角度內,就會全部被攻擊。那麼這個算法具體應該怎麼實現呢?我們需要一個一個問題的解決。先看下效果圖吧:

這個怪物從出生點尋路過來,走了半天,被我普攻直接打死了,可憐它三秒。那麼很明顯的一個判斷,它在我面前,然後也靠我很近,所以我只要一按鍵就會攻擊它,那麼必中,因爲滿足了我們的算法。OK,來看看具體的原理和實現吧。首先,我們先計算攻擊範圍,就是在我攻擊範圍內過後,再纔有是不是在我面前。可能有人要和我槓了,先計算角度,再計算距離。但是這很明顯不行。我們必須先計算距離,再計算角度。那麼怎麼弄呢?

普攻邏輯:首先需要一個集合來保存所有需要被攻擊的怪物。然後我們先遍歷場上所有怪物,然後再判斷距離及角度。把符合條件的放入集合,然後遍歷集合,一次調受傷函數就可以了。具體的怎麼判斷距離和角度呢?這個很簡單,需要用到unity自帶的函數Vector3.Distance和Vector3.Angle;代碼如下:

代碼中都有註釋,問題應該不大。這裏爆炸力說一下,我做這個只是單純的爲了效果好看點,因爲我寫了一個範圍攻擊,希望它有擊退和擊飛效果。所以用了剛體的爆炸力函數。效果還是可以的。以上就是攻擊判斷的內容了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章