Пример #1
0
    // Start is called before the first frame update
    void Start()
    {
        currentState      = AI_STATE.HEALTH_HIGH;
        seekComponent     = GetComponent <KinematicSeek>();
        fleeComponent     = GetComponent <KinematicFlee>();
        arriveComponent   = GetComponent <KinematicArrive>();
        sidestepComponent = GetComponent <KinematicSidestep>();
        playerScript      = GetComponent <PlayerScript>();

        lowHealthTargetNearby = new TargetNearbyDecision(5.0f);
        lowHealthTargetNearIncomingProjectile = new IncomingProjectileDecision();
        lowHealthTargetFarIncomingProjectile  = new IncomingProjectileDecision();

        highHealthTargetNearby = new TargetNearbyDecision(5.0f);
        highHealthTargetNearIncomingProjectile = new IncomingProjectileDecision();
        highHealthTargetFarIncomingProjectile  = new IncomingProjectileDecision();

        arrivePlayerAction    = new ArrivePlayerAction();
        shootPlayerAction     = new ShootPlayerAction();
        seekHealthAction      = new SeekHealthAction();
        avoidPlayerAction     = new AvoidPlayerAction();
        avoidProjectileAction = new AvoidProjectileAction();

        avoidProjectileAction.kinematicComponent = seekComponent;
        avoidProjectileAction.character          = gameObject;
        arrivePlayerAction.kinematicComponent    = arriveComponent;
        arrivePlayerAction.character             = gameObject;
        seekHealthAction.kinematicComponent      = seekComponent;
        seekHealthAction.character           = gameObject;
        avoidPlayerAction.kinematicComponent = fleeComponent;
        avoidPlayerAction.character          = gameObject;
        shootPlayerAction.kinematicComponent = arriveComponent;
        shootPlayerAction.character          = gameObject;

        lowHealthTargetNearby.character   = gameObject;
        lowHealthTargetNearby.target      = target;
        lowHealthTargetNearby.trueBranch  = lowHealthTargetNearIncomingProjectile;
        lowHealthTargetNearby.falseBranch = lowHealthTargetFarIncomingProjectile;

        lowHealthTargetNearIncomingProjectile.character   = gameObject;
        lowHealthTargetNearIncomingProjectile.trueBranch  = avoidProjectileAction;
        lowHealthTargetNearIncomingProjectile.falseBranch = avoidPlayerAction;

        lowHealthTargetFarIncomingProjectile.character   = gameObject;
        lowHealthTargetFarIncomingProjectile.trueBranch  = avoidProjectileAction;
        lowHealthTargetFarIncomingProjectile.falseBranch = seekHealthAction;

        highHealthTargetNearby.character   = gameObject;
        highHealthTargetNearby.target      = target;
        highHealthTargetNearby.trueBranch  = highHealthTargetNearIncomingProjectile;
        highHealthTargetNearby.falseBranch = highHealthTargetFarIncomingProjectile;

        highHealthTargetNearIncomingProjectile.character   = gameObject;
        highHealthTargetNearIncomingProjectile.trueBranch  = avoidProjectileAction;
        highHealthTargetNearIncomingProjectile.falseBranch = shootPlayerAction;

        highHealthTargetFarIncomingProjectile.character   = gameObject;
        highHealthTargetFarIncomingProjectile.trueBranch  = avoidProjectileAction;
        highHealthTargetFarIncomingProjectile.falseBranch = arrivePlayerAction;
    }
Пример #2
0
 void Start()
 {
     goal_script = GetComponent <Goal>();
     goal_script.setGoal(ordered_goals[goal_index]);
     kinematicArrive = GetComponent <KinematicArrive>();
     dynoArrive      = GetComponent <DynoArrive>();
 }
Пример #3
0
 void Awake()
 {
     seek   = GetComponent <KinematicSeek>();
     flee   = GetComponent <KinematicFlee>();
     arrive = GetComponent <KinematicArrive>();
     wander = GetComponent <KinematicWander>();
 }
Пример #4
0
 // Use this for initialization
 void Start()
 {
     char_kinematic = GetComponent <Kinematic>();
     seek           = GetComponent <KinematicSeek>();
     arrive         = GetComponent <KinematicArrive>();
     align          = GetComponent <DynoAlign>();
 }
        public void ManageAI(MovementAI ai, Rigidbody2D character)
        {
            Kinematic characterKinematic = KinematicAdapter.FromRigidbody2DToKinematic(character);
            Kinematic targetKinematic    = new Kinematic();
            Algorithm algorithm          = new KinematicNone();

            switch (ai.aiAlgorithm)
            {
            case AIAlgorithm.KinematicSeek:
                targetKinematic = KinematicAdapter.FromRigidbody2DToKinematic(ai.target);
                algorithm       = new KinematicSeek(characterKinematic, targetKinematic, ai.maxSpeed);
                break;

            case AIAlgorithm.KinematicFlee:
                targetKinematic = KinematicAdapter.FromRigidbody2DToKinematic(ai.target);
                algorithm       = new KinematicFlee(characterKinematic, targetKinematic, ai.maxSpeed);
                break;

            case AIAlgorithm.KinematicArrive:
                targetKinematic = KinematicAdapter.FromRigidbody2DToKinematic(ai.target);
                algorithm       = new KinematicArrive(characterKinematic, targetKinematic, ai.maxSpeed, ai.satisfactionRadius, ai.timeToTarget);
                break;

            case AIAlgorithm.KinematicWander:
                algorithm = new KinematicWander(characterKinematic, ai.maxSpeed, ai.maxRotation);
                break;
            }
            SteeringOutput steering = algorithm.getSteering();

            steering.Apply(characterKinematic, ai.lookWhereYoureGoing, ai.maxSpeed, Time.deltaTime);
            KinematicAdapter.UpdateRigidbody2DWithKinematic(character, characterKinematic);
        }
Пример #6
0
    // Use this for initialization
    void Start()
    {
        char_kinematic = GetComponent <Kinematic>();
        seek           = GetComponent <KinematicSeek>();
        arrive         = GetComponent <KinematicArrive>();

        wander = GetComponent <Wander>();
    }
Пример #7
0
 void Start()
 {
     char_RigidBody  = GetComponent <Kinematic>();
     arrive          = GetComponent <DynoArrive>();
     align           = GetComponent <DynoAlign>();
     kinematicArrive = GetComponent <KinematicArrive>();
     isWandering     = true;
 }
Пример #8
0
 // Use this for initialization
 void Start()
 {
     char_kinematic = GetComponent <Kinematic>();
     seek           = GetComponent <KinematicSeek>();
     arrive         = GetComponent <KinematicArrive>();
     dynoAlign      = GetComponent <DynoAlign>();
     if (recordLogs)
     {
         logWriter = GetComponent <CustomLogWriter>();
     }
 }
Пример #9
0
    void Start()
    {
        //Inicializamos las estructuras necesarias de otros componentes
        enemy         = GameObject.Find(enemyName).GetComponent <static_data>();
        kineticsEnemy = enemy.kineticsAgent;

        kineticsAgent = agent.kineticsAgent;
        steeringAgent = agent.steeringAgent;
        maxspeed      = agent.maxspeed;

        //Inicializamos movimientos
        kinematicArrive = new KinematicArrive(kineticsAgent, kineticsEnemy, maxSeekSpeed, timeTotarget, radius);
    }
Пример #10
0
    protected void Awake()
    {
        // Init Vars
        InitializeVars();

        // Initialize behaviors
        arrive    = new Behavior[2];
        arrive[0] = new KinematicArrive()
        {
            maxSpeed = maxSpeed
        };
        arrive[1] = new SteeringArrive()
        {
            maxSpeed = maxSpeed, timeToTarget = timeToTarget, slowRadius = slowRadius, targetRadius = targetRadius
        };

        wander = new KinematicWander(wanderSpeed);
        pursue = new KinematicPursue(maxSpeed)
        {
            maxPredication = maxPrediction
        };

        // Initialize Rotation behaviors
        align    = new Align[2];
        align[0] = new KinematicAlign(rotationSpeed);
        align[1] = new SteeringAlign();

        if (steeringAtStart)
        {
            behaviorIndex = 1;
        }
        else
        {
            behaviorIndex = 0;
        }
    }
 // Use this for initialization
 void Start()
 {
     StaticTransform charStatic = new StaticTransform(transform);
     StaticTransform targetStatic = new StaticTransform(target);
     arrive = new KinematicArrive(charStatic, targetStatic, maxSpeed, arriveGoalRadius, arriveTimeToTarget);
 }
Пример #12
0
 // Use this for initialization
 void Start()
 {
     arrive = GetComponent <KinematicArrive>();
 }