※ 引述《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是用來偵測障礙物的