public void Follow(PathData pathData, float moveSpeed, FollowType followType, FollowDirection followDirection) { this.pathData = pathData; this.moveSpeed = moveSpeed; this.followType = followType; this.followDirection = followDirection; StopFollowing(); var closestLineIndex = GetClosestLineIndex(_transform.position); _currentIndex = GetClosestPointIndex(closestLineIndex * 20, _transform.position); StartCoroutine("FollowPath"); }
public void FollowToPoint(PathData pathData, float moveSpeed, Vector2 targetPos) { this.pathData = pathData; this.moveSpeed = moveSpeed; this.followType = FollowType.Once; StopFollowing(); var closestLineIndex = GetClosestLineIndex(_transform.position); _currentIndex = GetClosestPointIndex(closestLineIndex * 20, _transform.position); closestLineIndex = GetClosestLineIndex(targetPos); var targetIndex = GetClosestPointIndex(closestLineIndex * 20, targetPos); this.followDirection = (_currentIndex < targetIndex) ? FollowDirection.Forward : FollowDirection.Backward; StartCoroutine("FollowPathToPoint", targetIndex); }