看板 GameDesign 關於我們 聯絡資訊
※ 引述《Neverfor (八卦蟑螂)》之銘言: : void update內 : 1.transform.position += x變量 : y同理 : 2.transform.translate( vector * Time.deltatime * speed) : 第一種速度都固定 : 第二種隨著向量長度大小決定速度 : 目前是用第二種方法做 : 但有時候會有一些問題 : 像怪物陷到地下 : 或者跟玩家明顯不同層的問題 : 然後距離太遠的時候會直接漂到超近 : ps : 我偵測玩家有沒有靠太近是用距離比較 上次有查到一種叫raycast的 還沒用過目前還在研究 從1和2看來,你是不需要考慮障礙物? 在不需要移動方向圓滑的情況下 2的過快移動解決方式很簡單 把vector的長度限制在一個最大值以內就好 vector = vector.normalized * Mathf.Min(kMaxSpeed, vector.magnitude); 要圓滑追縱,可以去找找steering behavior的資料,然後找追蹤(seek)這個行為 簡單來說就是把追縱邏輯移到速度上,然後用速度更新位置 steering behavior還有一些比較進階的行為 像是避開同伴(avoid)或者攔截(intercept) raycast是用來偵測障礙物的 -- Web http://AllenChou.net Twitter http://twitter.com/TheAllenChou LinkedIn http://linkedin.com/in/MingLunChou -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 160.33.43.15 ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1527292560.A.F14.html ※ 編輯: cjcat2266 (160.33.43.15), 05/26/2018 07:58:13
Neverfor: 晚點來試看看 謝謝~ 05/26 14:22