bool moveByPath()//return isFinish { nowTarget = pathList[nowPathIndex]; Vector2 diff = nowTarget.GetPosition() - transform.position; //落到地面時可能不成立,因為GraphNode和角色的y有落差(落地觸發reFindPath) if (diff.sqrMagnitude < Movable.MoveEpsilon)//非常接近了,瞄準下個節點 { showNowState("到達:" + nowTarget.getNodeKey()); movable.sendMsgStopMove(); transform.position = nowTarget.GetPosition(); nowPathIndex += 1; //這裡要再更新一次,不然fixedUpdate可能用到舊資料 movable.DefferedMove(Vector2.zero); return(true); } else { Debug.DrawLine(nowTarget.GetPosition(), transform.position, Color.red); showNowState("AI Move [" + getNowPathIndex() + "](" + nowTarget.getNodeKey() + ")"); } movable.DefferedMove(diff); return(false); }
public float getEvaluation(IGraphNode target) { Vector3 temp = target.GetPosition() - transform.position; return(Mathf.Abs(temp.x) + Mathf.Abs(temp.y)); }