Пример #1
0
    private void LookAt(Vector3 target) => RotationEngine.RotateToTargetWithPlaneLimiter(target); // Повернуть корабль в сторону точки

    private void GetNextPoint()                                                                   // Получаем следующую контрольную точку для движения
    {
        PreviousTarget = CurrentTarget;
        CurrentTarget  = NextTarget;
        NextTarget     = System_Waypoints.GetNextPoint(CurrentTarget, PreviousTarget);
        if (NextTarget == null)
        {
            SwitchFlightMode(FlightMode.Normal);
            isMoveToPoint = false;
        }
    }
Пример #2
0
    private void UpdatePath(Vector3 Target)
    {
        i = 0;

        NavMesh.CalculatePath(transform.position, Target, NavMesh.AllAreas, NavMeshPath);

        if (NavMeshPath.status != NavMeshPathStatus.PathInvalid)
        {
            MoveTargetOnNavMesh();
        }
        else
        {
            pointsPairs = System_Waypoints.GetPointsClose(Target);
            while (i < pointsPairs.Length && NavMeshPath.status == NavMeshPathStatus.PathInvalid)
            {
                NavMesh.CalculatePath(transform.position, pointsPairs[i].Value.position, NavMesh.AllAreas, NavMeshPath);
                i += 1;
            }
            MoveTargetOnNavMesh();
        }
    }
Пример #3
0
 private void FindBetterPoint()
 {
     PreviousTarget = CurrentTarget;
     CurrentTarget  = NextTarget;
     NextTarget     = System_Waypoints.GetBetterPointInDistance(transform, betterPointMinDistance);
 }
Пример #4
0
 private void FindClosestPoint()
 {
     PreviousTarget = CurrentTarget;
     CurrentTarget  = NextTarget;
     NextTarget     = System_Waypoints.GetClosestPoint(transform);
 }
Пример #5
0
    //xxxxxxxxxxxxxxxxxxxxxxxx

    private void Awake() => System_Waypoints.SetMovePoints(MovePoints, PointsTr);