Ejemplo n.º 1
0
        public void Init(Transform target, EnemyMovementSetting settings)
        {
            _target = target;

            switch (settings.movementType)
            {
            case EnemyMovementType.GROUND:
                NavMeshAgent agent = gameObject.AddComponent <NavMeshAgent>();
                _movementBehaviour = new NavMeshMovement(agent, settings.speed, settings.stoppingDistance);
                break;

            case EnemyMovementType.FLYING:
                Pursuer pursuer = gameObject.AddComponent <Pursuer>();
                pursuer.SetConstraints(settings.xMin, settings.xMax, settings.yMin, settings.yMax, settings.zMin,
                                       settings.zMax);
                pursuer.SetPathfindingParameters(settings.selectedPFAlg, settings.pathfindingLevel,
                                                 settings.inEditorPathfindingTraverce, settings.heuristicFactor, settings.trajectoryOptimization,
                                                 settings.trajectorySmoothing);
                pursuer.SetMovementSettings(settings.speed, settings.moveVectorOrientation, settings.turnSpeed);
                _movementBehaviour = new FlyingMovement(pursuer, settings.lesion, settings.updateOffset);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }