//----------------------------------------------------- // 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; }
//----------------------------------------------------- // 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; }
//----------------------------------------------------- // 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(); } }