2017年9月22日 星期五

[Unity 範例檔] 改變物理方向!

類似銀河馬力歐的引力切換!


線上玩
範例檔下載 (2021.11.1 修正連結)
===============================================
在本範例中為了讓每個角色的引力皆是獨立計算,
於是便將每個角色身上  Rigidbody2D 的 Gravity Scale 調整為零。
使角色不受原始Unity的重力影響,而受我們額外撰寫的引力系統做重力移動。
在這範例中,角色的引力方向將不在是遊戲畫面的正下方。
而是角色與 場地(Land物件)之間最接近的點,如下圖藍色箭頭所指處。

如何取得玩家與場地物件之間最近的點呢? 
我上網找到一篇相關需求的討論裡面提供一個 Function ClosestPointToLine ,
可以快速找出一段邊線,與另一點之間最近的點落在何處。  ...連結 

最耗工的方法是將所有的邊線都算過一輪取得每個邊與角色最近的點,
但我額寫了一些判斷流程使得我只要比較兩個邊就可以找出最近的點。

我的方法如下:

  1. 首先取得玩家與 Land 物件多邊形點中那一點最近。 (下圖的灰點)
  2. 再求出與最近點相連的兩個邊。(下圖的紅邊與藍邊)
  3. 接著求出兩邊各自與玩家最近的點,並比較哪個點離玩家最近。(下圖紅點與藍點)
  4. OK,最近的那個點就是我們要的答案

沒有留言:

張貼留言