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; } }
private void Start() { target = waypoints.GetPoint(currentWaypoint); }