public static Booster initFromModel(Model model) { Booster booster = null; switch (model) { case Model.IronDenture: booster = new IronDenture(); break; /*case Model.Mushroom: * booster = new Mushroom(); * break;*/ case Model.GasEquipment: booster = new GasEquipment(); break; case Model.MagicShield: booster = new MagicShield(); break; case Model.QueenTermite: booster = new QueenTermite(); break; } return(booster); }
void Awake() { bulletHolder = GameObject.FindGameObjectWithTag("BulletHold"); //bulletHolder = GameObject.Find("BulletHold"); playerShield = FindObjectOfType <MagicShield>(); body2D = GetComponent <Rigidbody2D>(); }
void Update() { Player_Controller player = GetComponent <Player_Controller>(); MagicShield shield = GetComponentInChildren <MagicShield>(); if (player.curHealth == 3) { Heart1.SetActive(true); Heart2.SetActive(true); Heart3.SetActive(true); } else if (player.curHealth == 2) { Heart1.SetActive(true); Heart2.SetActive(true); Heart3.SetActive(false); } else if (player.curHealth == 1) { Heart1.SetActive(true); Heart2.SetActive(false); Heart3.SetActive(false); } else if (player.curHealth == 0) { Heart1.SetActive(false); Heart2.SetActive(false); Heart3.SetActive(false); } shieldTimer.text = "Shield Timer " + System.Math.Round(shield.shieldUse, 0); }
public override bool InitMagicalObject(GameObject Weapon, GameObject Direction) { CharacterStatus Charstats = Weapon.GetComponentInParent <CharacterStatus>(); if (Charstats != null && Charstats.CurrentMana >= Cost) { GameObject FireShield = Instantiate(SpellPrefab); MagicShield shield = FireShield.GetComponent <MagicShield>(); shield.currentTime = EffectDuration; shield.MaxTime = EffectDuration; FireShield.transform.parent = Charstats.transform; FireShield.transform.localPosition = Vector3.zero + (new Vector3(0, 1, 0)); Charstats.CurrentMana -= Cost; shield.StartCounting = true; GlobalCoolDown = true; return(true); } return(false); }
public static Booster initFromModel(Model model) { Booster booster = null; switch (model) { case Model.IronDenture: booster = new IronDenture(); break; /*case Model.Mushroom: booster = new Mushroom(); break;*/ case Model.GasEquipment: booster = new GasEquipment(); break; case Model.MagicShield: booster = new MagicShield(); break; case Model.QueenTermite: booster = new QueenTermite(); break; } return booster; }
void Update() { Player_Controller player = GetComponent <Player_Controller>(); MagicShield shield = GetComponentInChildren <MagicShield>(); if (player.curHealth == 3) { Heart1.SetActive(true); Heart2.SetActive(true); Heart3.SetActive(true); noHeart1.SetActive(false); noHeart2.SetActive(false); noHeart3.SetActive(false); } else if (player.curHealth == 2) { Heart1.SetActive(true); Heart2.SetActive(true); Heart3.SetActive(false); noHeart1.SetActive(false); noHeart2.SetActive(false); noHeart3.SetActive(true); } else if (player.curHealth == 1) { Heart1.SetActive(true); Heart2.SetActive(false); Heart3.SetActive(false); noHeart1.SetActive(false); noHeart2.SetActive(true); noHeart3.SetActive(true); } else if (player.curHealth == 0) { Heart1.SetActive(false); Heart2.SetActive(false); Heart3.SetActive(false); noHeart3.SetActive(true); noHeart3.SetActive(true); noHeart3.SetActive(true); } //shieldTimer.text = "Shield Timer " + System.Math.Round(shield.shieldUse, 0); /* * //Shield audio test function * if shield.shieldUse > 2 { * PlayAudio(1); * } * * else if (shield.shieldUse > 2 && shield.shieldUse < 3){ * PlayAudio(2); * } * * else if (shield.shieldUse > 1 && shield.shieldUse < 2){ * PlayAudio(3); * } * * else if (shield.shieldUse = 0){ * PlayAudio(4); * } */ }
void Awake() { body2D = GetComponent <Rigidbody2D>(); playerShield = FindObjectOfType <MagicShield>(); }
// Update is called once per frame void Update() { if (Controllable) { movements.attacks = Attacks.NoSpell; RaycastHit ObjectInfront; float DistanceFromEnemy = (transform.position - Target.transform.position).magnitude; Collider[] DangerSurrounding = Physics.OverlapSphere(transform.position, 30, 0b10000000000000000); Collider[] IncomingObj = Physics.OverlapSphere(transform.position, 30, 0b1001100000000000); Collider[] DetectPowerUps = Physics.OverlapSphere(transform.position, 50, 0b1000000000000000000); MagicShield MS = GetComponentInChildren <MagicShield>(); if (movements.control == Control.Forward && Physics.SphereCast(new Ray(transform.position, transform.forward), 6, out ObjectInfront, 2, ~512)) { movements.rotate = GoAround(ObjectInfront.transform.gameObject); } else if (DetectPowerUps.Length > 0) { Transform PowerUpTrans = DetectPowerUps[0].transform; Vector2 PowerUpDir = (new Vector2(PowerUpTrans.position.x - transform.position.x, PowerUpTrans.position.z - transform.position.z)).normalized; movements.rotate = Alignment(PowerUpDir, this.gameObject); if (movements.rotate == Rotation.NoRotate) { movements.control = Control.Forward; } else { movements.control = Control.Still; } } else if (DangerSurrounding.Length > 0 || Charstats.CurrentMana < EquippedSpell.Cost || Charstats.CurrentHealth < 150) { Debug.Log(Charstats.CurrentMana + " : " + EquippedSpell.Cost); if (DistanceFromEnemy < 15) { movements.rotate = RunAwayFromEnemy(Target.transform); } else if (DistanceFromEnemy >= 15) { movements.rotate = CircleAroundEnemy(Target.transform); } foreach (Collider Danger in DangerSurrounding) { movements.rotate = RunAwayFromEnemy(Danger.gameObject.transform); } movements.control = Control.Forward; } else if (IncomingObj.Length > 0) { foreach (Collider IncObj in IncomingObj) { MovingObject spellObj = IncObj.GetComponent <MovingObject>(); HomingObj homingSpell = IncObj.GetComponent <HomingObj>(); if (spellObj != null && spellObj.CasterName == this.gameObject.name) { continue; } if (homingSpell != null && homingSpell.Caster == this.gameObject.name) { continue; } switch (IncObj.gameObject.layer) { case 11: if (DefensiveSpells[1].currentCoolDown < DefensiveSpells[1].Cooldown && movements.IsDoneAnimatingAttack()) { defensives.defense = AvoidMissiles(IncObj.gameObject); } else if (MS == null || (MS != null && MS.gameObject.layer != 14)) { EquippedSpell = DefensiveSpells[1]; CastSpell(); } break; case 12: if (DefensiveSpells[0].currentCoolDown < DefensiveSpells[0].Cooldown && movements.IsDoneAnimatingAttack()) { defensives.defense = AvoidMissiles(IncObj.gameObject); } else if (MS == null || (MS != null && MS.gameObject.layer != 13)) { EquippedSpell = DefensiveSpells[0]; CastSpell(); } break; case 15: if (movements.IsDoneAnimatingAttack()) { defensives.defense = AvoidMissiles(IncObj.gameObject); } break; } } } else if (animator.GetCurrentAnimatorClipInfo(3).Length == 0) { Vector2 EnemyDir = (new Vector2(Target.transform.position.x - transform.position.x, Target.transform.position.z - transform.position.z)).normalized; movements.rotate = Alignment(EnemyDir, Aim); GameObject Obstacle = null; if (DistanceFromEnemy < 15 && Spells[2].currentCoolDown >= Spells[2].Cooldown) { EquippedSpell = Spells[2]; CastSpell(); } else if (movements.rotate == Rotation.NoRotate) { Vector2 EnemyFacingVec = (new Vector2(Target.transform.forward.x, Target.transform.forward.z)).normalized; float EnemyFacingAngle = Mathf.Acos(Vector2.Dot(EnemyDir, EnemyFacingVec)); Vector3 RayDir = (new Vector3(Target.transform.position.x - Aim.transform.position.x, 0, Target.transform.position.z - Aim.transform.position.z)).normalized; RaycastHit Rayhit; Debug.DrawRay(Aim.transform.position, RayDir * 40f); if (Physics.Raycast(new Ray(Aim.transform.position + Aim.transform.right / 2, RayDir), out Rayhit, 40f, 0b100000000000000000)) { Obstacle = Rayhit.transform.gameObject; } else if (EnemyFacingAngle < Mathf.PI * .4f) { if (Spells[4].currentCoolDown >= Spells[4].Cooldown) { EquippedSpell = Spells[4]; EquippedSpell.CastAtPosition = Target.transform.position; CastSpell(); } else { EquippedSpell = Spells[3]; CastSpell(); } } else { EquippedSpell = Spells[1]; CastSpell(); } } if (Obstacle != null) { movements.control = AvoidObstacle(Obstacle); } else if (DistanceFromEnemy < 30) { movements.control = Control.Backward; } else if (DistanceFromEnemy > 40) { movements.control = Control.Forward; } else { movements.control = Control.Still; } } } else { movements.control = Control.Still; movements.rotate = Rotation.NoRotate; movements.attacks = Attacks.NoSpell; defensives.defense = Defensive.NotDefensive; } foreach (AbstractSpell AS in Spells) { AS.UpdateCoolDown(); } foreach (AbstractSpell AS in DefensiveSpells) { if (AS.GlobalCoolDown) { foreach (AbstractSpell DS in DefensiveSpells) { DS.currentCoolDown = 0; } AS.GlobalCoolDown = false; break; } AS.UpdateCoolDown(); } }
void Awake() { anim = GetComponent <Animator>(); playerShield = FindObjectOfType <MagicShield>(); visible = GetComponent <SpriteRenderer>(); }