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);
    }
Beispiel #2
0
    public float getEvaluation(IGraphNode target)
    {
        Vector3 temp = target.GetPosition() - transform.position;

        return(Mathf.Abs(temp.x) + Mathf.Abs(temp.y));
    }