假設我們有一個游戲場景:
里面有n個玩家,服務器需要知道每個玩家和其它玩家之間的距離,從而得到攻擊范圍內的玩家,并進行下一步判斷。
假設這個場景發生在服務器,且沒有第三方類別庫支持,那么自己用演算法該怎么進行判斷。
uj5u.com熱心網友回復:
接收到每個角色 當前幀的 位置 然后 直接計算點之間的距離 不就行了嗎uj5u.com熱心網友回復:
距離公式:sqrt( (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2))Unity計算:(playerA.tranform.position-playerB.transform.position).magnitude
但是,一般情況下,不使用距離直接去判斷攻擊范圍內的其他玩家。因為有更好的辦法,比如使用Physics.OverlapSphere來進行球型檢測,檢索球形范圍內的指定層的物體,也還有其他方法。。
uj5u.com熱心網友回復:
再比如,使用觸發式碰撞器檢測,將碰撞器設定為觸發器模式(非物理碰撞),當A物體進入B物體的碰撞檢測范圍時,B會受到訊息,然后維護一個可攻擊的串列,當A離開或者死亡或者變得不可攻擊(比如吃了無敵)時,在串列中移除A。。。。方法太多了。。。要綜合性能等各種因素綜合考慮。
最差的方法就是,列舉所有的玩家,然后計算他們之間的距離。。4個玩家要計算AB、AC、AD、BC、BD、CD6次。。。。。玩家越多計算量越大。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/270195.html
標籤:Unity3D
下一篇:請教:從0開始自學網路安全
