예제 #1
0
    //-----------------------------------------------------
    // Setting up all AI behaviour components
    //
    // Jump across platforms, fire laser at player, jump to new platform
    //-----------------------------------------------------
    void Start()
    {
        //Set health
        SetHealth(m_healthMax);

        m_selectorTop = gameObject.AddComponent <BehaviourSelector>();

        m_gettingTarget  = gameObject.AddComponent <BehaviourSequence>();
        m_selectorAction = gameObject.AddComponent <BehaviourSelector>();
        m_sequenceFiring = gameObject.AddComponent <BehaviourSequence>();
        m_sequenceLaser  = gameObject.AddComponent <BehaviourSequence>();

        //Laser
        m_actionGetDisLaser   = gameObject.AddComponent <IsTargetCloseEnough>();
        m_actionFireLaser     = gameObject.AddComponent <FireLaserbeam>();
        m_actionLaserCooldown = gameObject.AddComponent <CoolDown>();

        m_jumpToPlatform  = gameObject.AddComponent <JumpToPlatform>();
        m_landingCooldown = gameObject.AddComponent <CoolDown>();

        //Set up get target
        if (GameObject.FindWithTag("GameController").GetComponent <GameManager>().m_singlePlayer)
        {
            m_actionGetTarget = gameObject.AddComponent <GetTargetSinglePlayer>();
        }
        else
        {
            switch (m_difficulty)
            {
            case Difficulty.Easy:
            {
                m_actionGetTarget = gameObject.AddComponent <GetTargetEasy>();
                break;
            }

            case Difficulty.Medium:
            {
                m_actionGetTarget = gameObject.AddComponent <GetTargetMedium>();
                break;
            }

            case Difficulty.Hard:
            {
                m_actionGetTarget = gameObject.AddComponent <GetTargetHard>();
                break;
            }
            }
        }

        m_selectorTop.m_behaviourBranches.Add(m_gettingTarget);
        m_selectorTop.m_behaviourBranches.Add(m_jumpToPlatform);

        m_gettingTarget.m_behaviourBranches.Add(m_actionGetTarget as BehaviourBase);
        m_gettingTarget.m_behaviourBranches.Add(m_selectorAction);

        m_selectorAction.m_behaviourBranches.Add(m_sequenceFiring);

        m_sequenceFiring.m_behaviourBranches.Add(m_sequenceLaser);
        m_sequenceFiring.m_behaviourBranches.Add(m_jumpToPlatform);
        m_sequenceFiring.m_behaviourBranches.Add(m_landingCooldown);

        m_sequenceLaser.m_behaviourBranches.Add(m_actionGetDisLaser);
        m_sequenceLaser.m_behaviourBranches.Add(m_actionFireLaser);
        m_sequenceLaser.m_behaviourBranches.Add(m_actionLaserCooldown);
        m_sequenceLaser.m_behaviourBranches.Add(m_jumpToPlatform);

        //Laser
        m_actionGetDisLaser.m_targetDistance  = m_laserFireDistance;
        m_actionFireLaser.m_chargeRate        = m_laserChargeTime;
        m_actionFireLaser.m_laserSpawnPos     = m_laserPos;
        m_actionFireLaser.m_laserFriendlyFire = m_laserFriendlyFire;
        m_actionFireLaser.m_laserFollowing    = m_laserFollowing;

        m_actionLaserCooldown.m_coolDown = m_laserCooldown;

        m_actionFireLaser.m_laserbeam = m_laserPrefab;

        //Jumping
        m_jumpToPlatform.m_jumpHeight = m_jumpHeight;
        m_jumpToPlatform.m_jumpTime   = m_jumpTime;

        m_landingCooldown.m_coolDown = m_landingTimer;

        m_initalBehaviour = m_selectorTop;
    }
예제 #2
0
    //-----------------------------------------------------
    // Setting up all AI behaviour components
    //
    // Move towards player, fire gun, repeat
    //-----------------------------------------------------
    void Start()
    {
        //Set health
        SetHealth(m_healthMax);

        //Set up varibles
        m_sequenceTop = gameObject.AddComponent <BehaviourSequence>();

        m_selectorActions = gameObject.AddComponent <BehaviourSelector>();

        //m_sequenceLaser = gameObject.AddComponent<BehaviourSequence>();
        m_sequenceGun  = gameObject.AddComponent <BehaviourSequence>();
        m_sequenceMove = gameObject.AddComponent <BehaviourSequence>();

        //m_actionGetDisLaser = gameObject.AddComponent<IsTargetCloseEnough>();
        //m_actionFireLaser = gameObject.AddComponent<FireLaserbeam>();
        //m_actionLaserCooldown = gameObject.AddComponent<CoolDown>();

        m_selectorFiringGun = gameObject.AddComponent <BehaviourSelector>();

        m_actionGetDisGun      = gameObject.AddComponent <IsTargetCloseEnough>();
        m_actionInfrontOfLedge = gameObject.AddComponent <InfrontOfLedge>();
        m_actionStopMovement   = gameObject.AddComponent <StopMovement>();

        m_actionFireGun     = gameObject.AddComponent <FireGun>();
        m_actionGunCooldown = gameObject.AddComponent <CoolDown>();

        m_actionGetDisMovement = gameObject.AddComponent <IsTargetCloseEnough>();
        m_actionMovetowards    = gameObject.AddComponent <MoveTowardsTarget>();

        //Set up get target
        if (GameObject.FindWithTag("GameController").GetComponent <GameManager>().m_singlePlayer)
        {
            m_actionGetTarget = gameObject.AddComponent <GetTargetSinglePlayer>();
        }
        else
        {
            switch (m_difficulty)
            {
            case Difficulty.Easy:
            {
                m_actionGetTarget = gameObject.AddComponent <GetTargetEasy>();
                break;
            }

            case Difficulty.Medium:
            {
                m_actionGetTarget = gameObject.AddComponent <GetTargetMedium>();
                break;
            }

            case Difficulty.Hard:
            {
                m_actionGetTarget = gameObject.AddComponent <GetTargetHard>();
                break;
            }
            }
        }

        //Gun
        m_actionGetDisGun.m_targetDistance = m_gunFireDistance;
        m_actionFireGun.m_numberOfBullets  = m_gunNumberOfShots;
        m_actionFireGun.m_timeBetweenShots = m_gunTimeBetweenShots;
        m_actionFireGun.m_bulletSpeed      = m_gunBulletSpeed;
        m_actionFireGun.m_bulletSpawnPos   = m_bulletSpawnPos;
        m_actionGunCooldown.m_coolDown     = m_gunCooldown;

        m_actionFireGun.m_bullet = m_bulletPrefab;

        //Laser
        //m_actionGetDisLaser.m_targetDistance = m_laserFireDistance;
        //m_actionFireLaser.m_chargeRate = m_laserChargeTime;
        //m_actionLaserCooldown.m_coolDown = m_laserCooldown;

        //m_actionFireLaser.m_laserbeam = m_laserPrefab;

        //Movement
        m_actionGetDisMovement.m_targetDistance = m_moveTowardsRange;

        //Set up branches
        m_sequenceTop.m_behaviourBranches.Add(m_actionGetTarget as BehaviourBase);
        m_sequenceTop.m_behaviourBranches.Add(m_selectorActions);

        //m_selectorActions.m_behaviourBranches.Add(m_sequenceLaser);
        m_selectorActions.m_behaviourBranches.Add(m_sequenceGun);
        m_selectorActions.m_behaviourBranches.Add(m_sequenceMove);

        //m_sequenceLaser.m_behaviourBranches.Add(m_actionGetDisLaser);
        //m_sequenceLaser.m_behaviourBranches.Add(m_actionFireLaser);
        //m_sequenceLaser.m_behaviourBranches.Add(m_actionLaserCooldown);

        m_selectorFiringGun.m_behaviourBranches.Add(m_actionGetDisGun);
        m_selectorFiringGun.m_behaviourBranches.Add(m_actionInfrontOfLedge);

        m_sequenceGun.m_behaviourBranches.Add(m_selectorFiringGun);
        m_sequenceGun.m_behaviourBranches.Add(m_actionStopMovement);
        m_sequenceGun.m_behaviourBranches.Add(m_actionFireGun);
        m_sequenceGun.m_behaviourBranches.Add(m_actionGunCooldown);

        m_sequenceMove.m_behaviourBranches.Add(m_actionGetDisMovement);
        m_sequenceMove.m_behaviourBranches.Add(m_actionMovetowards);

        m_initalBehaviour = m_sequenceTop;
    }
예제 #3
0
    //-----------------------------------------------------
    // Setting up all AI behaviour components
    //
    // Fly towards, fire in a cone, flee, repeat
    //-----------------------------------------------------
    void Start()
    {
        //Set health
        SetHealth(m_healthMax);

        //Set up varibles
        m_sequenceTop = gameObject.AddComponent <BehaviourSequence>();

        m_selectorActions = gameObject.AddComponent <BehaviourSelector>();

        m_sequenceCone = gameObject.AddComponent <BehaviourSequence>();
        m_sequenceMove = gameObject.AddComponent <BehaviourSequence>();

        m_actionGetDisCone   = gameObject.AddComponent <IsTargetCloseEnoughX>();
        m_actionFireCone     = gameObject.AddComponent <FireCone> ();
        m_actionFlee         = gameObject.AddComponent <FleeTarget> ();
        m_actionConeCooldown = gameObject.AddComponent <CoolDown> ();

        m_actionGetDisMovement = gameObject.AddComponent <IsTargetCloseEnoughX> ();
        m_actionMovetowards    = gameObject.AddComponent <MoveTowardsTargetFlying> ();

        //Set up get target
        if (GameObject.FindWithTag("GameController").GetComponent <GameManager>().m_singlePlayer)
        {
            m_actionGetTarget = gameObject.AddComponent <GetTargetSinglePlayer>();
        }
        else
        {
            switch (m_difficulty)
            {
            case Difficulty.Easy:
            {
                m_actionGetTarget = gameObject.AddComponent <GetTargetEasy>();
                break;
            }

            case Difficulty.Medium:
            {
                m_actionGetTarget = gameObject.AddComponent <GetTargetMedium>();
                break;
            }

            case Difficulty.Hard:
            {
                m_actionGetTarget = gameObject.AddComponent <GetTargetHard>();
                break;
            }
            }
        }

        //Cone
        m_actionGetDisCone.m_targetDistance = m_coneFireDistance;

        m_actionFireCone.m_numberOfBullets  = m_coneNumberOfBursts;
        m_actionFireCone.m_timeBetweenShots = m_coneTimeBetweenShots;
        m_actionFireCone.m_bulletSpeed      = m_coneBulletSpeed;
        m_actionFireCone.m_fireCone         = m_coneAngle;
        m_actionFireCone.m_maxDis           = m_coneFireDistance + 1;
        m_actionFireCone.m_bulletSpawnPos   = m_bulletSpawnPos;

        m_actionFlee.m_fleeDistance    = m_fleeDistance;
        m_actionFlee.m_maxFleeDuration = m_fleeMaxTime;

        m_actionConeCooldown.m_coolDown = m_coneCooldown;

        m_actionFireCone.m_bullet = m_bulletPrefab;

        //Movement
        m_actionGetDisMovement.m_targetDistance = m_moveTowardsRange;

        //Set up branches
        m_sequenceTop.m_behaviourBranches.Add(m_actionGetTarget as BehaviourBase);
        m_sequenceTop.m_behaviourBranches.Add(m_selectorActions);

        m_selectorActions.m_behaviourBranches.Add(m_sequenceCone);
        m_selectorActions.m_behaviourBranches.Add(m_sequenceMove);

        m_sequenceCone.m_behaviourBranches.Add(m_actionGetDisCone);
        m_sequenceCone.m_behaviourBranches.Add(m_actionFireCone);
        m_sequenceCone.m_behaviourBranches.Add(m_actionFlee);
        m_sequenceCone.m_behaviourBranches.Add(m_actionConeCooldown);

        m_sequenceMove.m_behaviourBranches.Add(m_actionGetDisMovement);
        m_sequenceMove.m_behaviourBranches.Add(m_actionMovetowards);

        m_initalBehaviour = m_sequenceTop;

        //Always play wasp movement sounds
        if (m_movementAudio != null)
        {
            m_movementAudio.GetComponent <AudioSource> ().Play();
        }
    }