public Vector2 Move()
    {
        if (m_waypoints.Count <= 0)
        {
            return(Vector2.zero);
        }

        Vector2 result;
        Vector2 curtPos   = transform.position;
        Vector2 targetPos = m_waypoints.GetPoint(m_index);
        Vector2 toTarget  = targetPos - curtPos;

        float targetDist = toTarget.magnitude;
        float moveDist   = m_speed * Time.deltaTime;

        if (moveDist >= targetDist)
        {
            result = targetPos;
            UpdateIndex();
        }
        else
        {
            Vector2 move = toTarget.normalized * moveDist;
            result = transform.position + new Vector3(move.x, move.y);
        }

        return(result);
    }
    private void HandleMouseDrag(Event e, Vector2 mousePos)
    {
        if (m_SelectedPoint >= 0)
        {
            Vector2 targetPos = mousePos;

            bool snap = (e.modifiers == EventModifiers.Shift);
            if (snap)
            {
                int     prevIndex = (m_SelectedPoint - 1) % m_Target.Count;
                Vector2 prevPt    = m_Target.GetPoint(prevIndex);
                int     nextIndex = (m_SelectedPoint + 1) % m_Target.Count;
                Vector2 nextPt    = m_Target.GetPoint(nextIndex);
                targetPos = SnapPosition(prevPt, nextPt, mousePos);
            }

            Undo.RecordObject(m_Target, "Drag Waypoint");
            m_Target.Points[m_SelectedPoint] = targetPos;
            m_NeedRepaint = true;
        }
    }
Exemple #3
0
 private void Start()
 {
     target = waypoints.GetPoint(currentWaypoint);
 }