public override FireState Fire() { if (currentAmmo <= 0) { return(FireState.OutOfAmmo); } if (Time.time > fireTimer) { float yOffsetDelay = Mathf.Clamp(1 / (30 / Mathf.Abs(owner.position.y)), 0f, 1f); Transform bombClone = Poolable.Get <GuidedGlideBomb>(() => Poolable.CreateObj <GuidedGlideBomb>(projectilePrefab.gameObject), spawnLocation.position, owner.rotation).transform; Rigidbody2D bombRb = bombClone.GetComponent <Rigidbody2D>(); GuidedGlideBomb bomb = bombClone.GetComponent <GuidedGlideBomb>(); int layerValue = whatAreOurProjectiles.layermask_to_layer(); TrailRenderer projTrail = bombClone.GetComponent <TrailRenderer>(); projTrail.material = layerValue == 8 ? t1Mat : t2Mat; bombClone.gameObject.layer = layerValue; bomb.target = target; bomb.timeBeforeBoosters = Mathf.Clamp(bomb.timeBeforeBoosters - yOffsetDelay, 0.6f, 2f); bomb.whatIsTarget = whatIsTarget; bombRb.velocity = ownerRb.velocity; fireTimer = delayBetweenFire + Time.time; fireSound.Play(); return(FireState.Fired); } else if (Time.time <= fireTimer) { return(FireState.OnDelay); } return(FireState.Failed); }
public bool FireCannon(float inaccuracyOffset) { if (inaccuracyOffset == 0) { inaccuracyOffset = this.inaccuracyOffset; } if (currentShells <= 0) { return(false); // means you have to reload } if (Time.time > cannonTimer) { Transform shellClone = Poolable.Get <CannonShell>(() => Poolable.CreateObj <CannonShell>(shellPrefab.gameObject), firePoint.position, Quaternion.identity).transform; int layerValue = whatAreOurProjectiles.layermask_to_layer(); shellClone.gameObject.layer = layerValue; shellClone.right = new Vector2(owner.up.x + Random.Range(-inaccuracyOffset, inaccuracyOffset), owner.up.y).normalized; /*(target.position - transform.position).normalized*/; // i have no f*****g idea what is going on at this point //Rigidbody2D shellRb = shellClone.GetComponent<Rigidbody2D>(); cannonTimer = cannonDelay + Time.time; currentShells--; return(true); } return(false); }
IEnumerator StartAnim() { plrHD.ChangeSkillCooldown(throwDelay, throwDelay); anim.SetBool("windSlice", true); yield return(new WaitForSeconds(waitTimeBeforeSwing)); GameObject windClone = Poolable.Get(() => Poolable.CreateObj(slicePref.gameObject), slicePool.NameOfKey); Arrow windCloneArr = windClone.GetComponent <Arrow>(); windClone.transform.position = transform.position; windClone.transform.rotation = slicePref.rotation * plr.rotation; windClone.GetComponent <Rigidbody2D>().velocity = plr.up * speed; windCloneArr.lifeTime = upTime + Time.time; windCloneArr.dmg = dmg; windCloneArr.pierceCount = amtOfPierces; yield return(new WaitForSeconds(2 - waitTimeBeforeSwing)); anim.SetBool("windSlice", false); throwTimer = Time.time + throwDelay; if (!plrHD) { plrHD = PlrHUD.Instance; } plrHD.ChangeSkillCooldown(throwTimer - Time.time, throwDelay); }
private IEnumerator Fire(float waitTime, int _dmg, float _arrowSpeed) { firing = true; normVel = rb.velocity; rb.velocity = Vector2.zero; attackTimer = Time.time + 9999f; anim.SetBool("firingNow", true); yield return(new WaitForSeconds(waitTime)); GameObject arrowClone = Poolable.Get(() => Poolable.CreateObj(arrowPref.gameObject), arrowPool.NameOfKey); arrowClone.transform.position = firePos.position; arrowClone.transform.rotation = transform.rotation; AudioMaster.Instance.Play("ArrowFire"); arrowClone.GetComponent <Rigidbody2D>().velocity = _arrowSpeed * transform.up * -1f; EnemyArrow enArrow = arrowClone.GetComponent <EnemyArrow>(); enArrow.dmg = _dmg; enArrow.lifeTime = arrowLifeTime + Time.time; if (objectContainer) { arrowClone.transform.parent = objectContainer; } anim.SetBool("firingNow", false); attackTimer = attackDelay + Time.time; rb.velocity = normVel; firing = false; }
private void SpawnEnemy() { int rng = Random.Range(0, waves[curWave].enemyList.Length); int randomSpawn = Random.Range(0, spawnList.Length); Vector2 spawnPos = new Vector2(Random.Range(spawnList[randomSpawn].position.x - 3, spawnList[randomSpawn].position.x + 3), Random.Range(spawnList[randomSpawn].position.y - 3, spawnList[randomSpawn].position.y + 3)); GameObject enemy = Poolable.Get(() => Poolable.CreateObj(waves[curWave].enemyList[rng].gameObject), waves[curWave].enemyList[rng].GetComponent <Poolable>().NameOfKey); enemy.transform.rotation = Quaternion.identity; enemy.transform.position = spawnPos; #region Injection if (enemy.GetComponent <EnemyAI>()) { enemy.GetComponent <EnemyAI>().Initialize(gm); } if (enemy.GetComponent <BowmanAI>()) { enemy.GetComponent <BowmanAI>().objectContainer = objContainer; enemy.GetComponent <BowmanAI>().Initialize(gm); } if (enemy.GetComponent <SwordsmanAI>()) { enemy.GetComponent <SwordsmanAI>().Initialize(gm); } #endregion enemy.transform.parent = enContainer; Enemy en = waves[curWave].enemyList[rng].GetComponent <Enemy>(); int _hp = Mathf.RoundToInt((Random.Range((en.enStats.RetMaxHP() / 1.4f), (en.enStats.RetMaxHP() * 1.2f)) * difficultyMultiplier) * (0.3f * (GameMaster.weaponIdOnStart + 1))); en = enemy.GetComponent <Enemy>(); en.SetMaxHealth(_hp); enemySpawnTimer = waves[curWave].timeBetweenSpawn + Time.time; }
private void Effects() { if ((Time.time > attackTimer)) { attackTimer = Time.time + attackDelay; Vector3 arrowSpawnPos = new Vector3(firePos.position.x, firePos.position.y, -1); CheckDelayWithStats(); CheckDmgWithStats(); AudioMaster.Instance.Play("ArrowFire"); if (anim && anim.GetBool("isFiring") == false) { anim.SetBool("isFiring", true); } GameObject bulClone = Poolable.Get(() => Poolable.CreateObj(arrow.gameObject), arrowPool.NameOfKey); bulClone.GetComponent <Arrow>().lifeTime = arrowLifeTime + Time.time; bulClone.transform.position = arrowSpawnPos; bulClone.transform.rotation = plr.transform.rotation; if (Player.woodResource > arrowCost) { bulClone.GetComponent <Arrow>().dmg = dmgBuf; Player.woodResource -= arrowCost; } else { bulClone.GetComponent <Arrow>().dmg = dmgWithoutWood; } bulClone.GetComponent <Rigidbody2D>().velocity = plr.transform.up * 40f; } }
private IEnumerator startThrow() { delayTimer = Time.time * 3f; plrHD.ChangeSkillCooldown(throwDelay, throwDelay); anim.SetBool("bladeThrow", true); buff = wep.dmg; wep.dmg = 0; yield return(new WaitForSeconds(1.05f)); retPoint = handPos.position; holySword = Poolable.Get(() => Poolable.CreateObj(holySwordPref.gameObject), holySwordPool.NameOfKey); holySword.transform.position = transform.position; holySword.transform.rotation = transform.rotation; holySword.GetComponent <HolyGreatsword>().dmg = dmg * 2; rb = holySword.GetComponent <Rigidbody2D>(); Vector3 flyPath; flyPath = plr.up; rb.velocity = flyPath * speed * Time.deltaTime; inAirTime = throwTime + Time.time; throwing = true; yield return(new WaitForSeconds(2.00f - 1.05f)); anim.SetBool("bladeThrow", false); delayTimer = Time.time + throwDelay; if (!plrHD) { plrHD = PlrHUD.Instance; } plrHD.ChangeSkillCooldown(delayTimer - Time.time, throwDelay); }
public override FireState Fire() { bool isTargVisual = CheckIfLookingAtTarget(lookCheckRange); if (isTargVisual) { if (Time.time > fireTimer) { Transform missileClone = Poolable.Get <UnguidedMissile>(() => Poolable.CreateObj <UnguidedMissile>(projectilePrefab.gameObject), spawnLocation.position, owner.rotation).transform; int layerValue = whatAreOurProjectiles.layermask_to_layer(); missileClone.gameObject.layer = layerValue; UnguidedMissile missile = missileClone.GetComponent <UnguidedMissile>(); TrailRenderer projTrail = missileClone.GetComponent <TrailRenderer>(); projTrail.material = layerValue == 8 ? t1Mat : t2Mat; missile.ActivateBoost(); fireTimer = delayBetweenFire + Time.time; fireSound.Play(); return(FireState.Fired); } else { return(FireState.OnDelay); } } else { return(FireState.Failed); } }
public override FireState Fire() { if (currentAmmo <= 0) { return(FireState.OutOfAmmo); } if (Time.time > fireTimer) { Vector2 ranPos = new Vector2(Random.Range(spawnLocation.position.x - Random.Range(-inaccuracyOffset, inaccuracyOffset), spawnLocation.position.x + Random.Range(-inaccuracyOffset, inaccuracyOffset)), spawnLocation.position.y); Transform bombClone = Poolable.Get <UnguidedBomb>(() => Poolable.CreateObj <UnguidedBomb>(projectilePrefab.gameObject), ranPos, Quaternion.identity).transform; int layerValue = whatAreOurProjectiles.layermask_to_layer(); bombClone.gameObject.layer = layerValue; bombClone.right = new Vector2(owner.up.x + Random.Range(-inaccuracyOffset, inaccuracyOffset), owner.up.y).normalized; /*(target.position - transform.position).normalized*/; // i have no f*****g idea what is going on at this point Rigidbody2D bombRb = bombClone.GetComponent <Rigidbody2D>(); TrailRenderer projTrail = bombClone.GetComponent <TrailRenderer>(); projTrail.material = layerValue == 8 ? t1Mat : t2Mat; bombRb.velocity = new Vector2(ownerRb.velocity.x / 1.5f, ownerRb.velocity.y / 1.1f); //Rigidbody2D shellRb = shellClone.GetComponent<Rigidbody2D>(); fireTimer = delayBetweenFire + Time.time; currentAmmo--; fireSound.Play(); return(FireState.Fired); } else if (Time.time <= fireTimer) { return(FireState.OnDelay); } return(FireState.Failed); }
private void Fire() { SoundManager.Instance.PlayAudio("skelefire"); fireTimer = fireDelay + Time.time; Poolable arrow = Poolable.Get(() => Poolable.CreateObj <Arrow>(arrowPrefab.gameObject)); arrow.transform.position = firePos.position; arrow.GetComponent <Rigidbody2D>().velocity = -Vector2.right * arrowSpeed * Time.deltaTime; }
public void LaunchMissile(Transform target) { if (Time.time > missileTimer) { Transform missileClone = Poolable.Get <GuidedAAMissile>(() => Poolable.CreateObj <GuidedAAMissile>(missilePrefab.gameObject), missileBay.position, owner.rotation).transform; int layerValue = whatAreOurProjectiles.layermask_to_layer(); missileClone.gameObject.layer = layerValue; GuidedAAMissile missile = missileClone.GetComponent <GuidedAAMissile>(); missile.whatIsTarget = whatIsTarget; missile.target = target; missileTimer = missileDelay + Time.time; } }
public override FireState Fire() { if (currentAmmo <= 0) { return(FireState.OutOfAmmo); } if (isTargVisual) { if (Time.time > fireTimer) { Transform shellClone = Poolable.Get <CannonShell>(() => Poolable.CreateObj <CannonShell>(projectilePrefab.gameObject), spawnLocation.position, Quaternion.identity).transform; int layerValue = whatAreOurProjectiles.layermask_to_layer(); shellClone.gameObject.layer = layerValue; shellClone.right = new Vector2(owner.up.x, owner.up.y + UnityEngine.Random.Range(-inaccuracyOffset, inaccuracyOffset)).normalized; /*(target.position - transform.position).normalized*/; // i have no f*****g idea what is going on at this point //Rigidbody2D shellRb = shellClone.GetComponent<Rigidbody2D>(); shellClone.GetComponent <Rigidbody2D>().AddForce(owner.up * shellClone.GetComponent <CannonShell>().Speed * 0.03f, ForceMode2D.Impulse); // changed Time.deltaTime to 0.03f due to weird physics behaviour on different speeds, change it back if it's not the cause TrailRenderer projTrail = shellClone.GetComponent <TrailRenderer>(); projTrail.material = layerValue == 8 ? t1Mat : t2Mat; //SetTrail(shellClone); fireTimer = delayBetweenFire + Time.time + UnityEngine.Random.Range(-delayBetweenFire / 5f, delayBetweenFire / 3.4f); currentAmmo--; firePartSys.Emit(firePartCount); if (!continuousFire) { fireSound.Play(); } else { if (!fireSound.isPlaying) { fireSound.Play(); soundTimer = Time.time + 2f; } } return(FireState.Fired); } else { return(FireState.OnDelay); } } else { FireAftereffectSound(); return(FireState.Failed); } }
public void LaunchSSMissile() { if (Time.time > missileTimer) { Transform missileClone = Poolable.Get <GuidedSSMissile>(() => Poolable.CreateObj <GuidedSSMissile>(missilePrefab.gameObject), new Vector3(missileFirePoint.position.x + Random.Range(-0.2f, 0.2f), missileFirePoint.position.y, missileFirePoint.position.z), Quaternion.identity).transform; missileClone.localEulerAngles = new Vector3(0f, 0f, rocketFireAngle); int layerValue = whatAreOurProjectiles.layermask_to_layer(); missileClone.gameObject.layer = layerValue; GuidedSSMissile missile = missileClone.GetComponent <GuidedSSMissile>(); missile.whatIsTarget = whatIsTarget; missile.BoostStage(); missileTimer = missileDelay + Time.time; } }
public void FireTorpedo(Transform target) { if (Time.time >= torpedoTimer) { Transform torpClone = Poolable.Get <GuidedTorpedo>(() => Poolable.CreateObj <GuidedTorpedo>(torpedoPrefab.gameObject), torpedoBay.position, Quaternion.identity).transform; GuidedTorpedo torp = torpClone.GetComponent <GuidedTorpedo>(); torp.target = target; torp.whatIsTarget = whatIsTarget; int layerValue = whatAreOurProjectiles.layermask_to_layer(); torpClone.gameObject.layer = layerValue; torpClone.up = owner.up; torpedoTimer = torpedoDelay + Time.time; } }
public void DropBomb(Transform target) { float yOffsetDelay = Mathf.Clamp(1 / (30 / Mathf.Abs(owner.position.y)), 0f, 1f); Transform bombClone = Poolable.Get <GuidedGlideBomb>(() => Poolable.CreateObj <GuidedGlideBomb>(bombPrefab.gameObject), bombBay.position, owner.rotation).transform; Rigidbody2D bombRb = bombClone.GetComponent <Rigidbody2D>(); GuidedGlideBomb bomb = bombClone.GetComponent <GuidedGlideBomb>(); int layerValue = whatAreOurProjectiles.layermask_to_layer(); bombClone.gameObject.layer = layerValue; bomb.target = target; bomb.timeBeforeBoosters = Mathf.Clamp(bomb.timeBeforeBoosters - yOffsetDelay, 0.6f, 2f); Debug.Log(bomb.timeBeforeBoosters + " | " + yOffsetDelay); bomb.whatIsTarget = whatIsTarget; bombRb.velocity = thisRb.velocity; dropTimer = dropDelay + Time.time; }
public bool LaunchMissile() { if (Time.time > missileTimer) { Transform missileClone = Poolable.Get <UnguidedMissile>(() => Poolable.CreateObj <UnguidedMissile>(missilePrefab.gameObject), missileBay.position, owner.rotation).transform; int layerValue = whatAreOurProjectiles.layermask_to_layer(); missileClone.gameObject.layer = layerValue; missileClone.gameObject.SetActive(true); UnguidedMissile missile = missileClone.GetComponent <UnguidedMissile>(); missile.ActivateBoost(); missileTimer = missileDelay + Time.time; return(true); } return(false); }
private void DropCharge(float dir, float forceMult) { Transform chargeClone = Poolable.Get <UnguidedDepthCharge>(() => Poolable.CreateObj <UnguidedDepthCharge>(projectilePrefab.gameObject), spawnLocation.position, Quaternion.identity).transform; // Debug.Log("here"); int layerValue = whatAreOurProjectiles.layermask_to_layer(); TrailRenderer projTrail = chargeClone.GetComponent <TrailRenderer>(); projTrail.material = layerValue == 8 ? t1Mat : t2Mat; projTrail.Clear(); chargeClone.gameObject.layer = layerValue; //Debug.Log("yes | " + chargeClone); Rigidbody2D thisRb = chargeClone.GetComponent <Rigidbody2D>(); thisRb.velocity = ((Vector2.right * dir + (Vector2)transform.up).normalized) * forceMult; // Debug.Log("commeth once again"); return; }
public bool DropBomb() { if (Time.time > bombTimer) { Vector2 ranPos = new Vector2(Random.Range(bombBay.position.x - Random.Range(-inaccuracyOffset, inaccuracyOffset), bombBay.position.x + Random.Range(-inaccuracyOffset, inaccuracyOffset)), bombBay.position.y); Transform bombClone = Poolable.Get <UnguidedBomb>(() => Poolable.CreateObj <UnguidedBomb>(bombPrefab.gameObject), ranPos, Quaternion.identity).transform; int layerValue = whatAreOurProjectiles.layermask_to_layer(); bombClone.gameObject.layer = layerValue; bombClone.right = new Vector2(owner.up.x + Random.Range(-inaccuracyOffset, inaccuracyOffset), owner.up.y).normalized /*(target.position - transform.position).normalized*/; // i have no f*****g idea what is going on at this point Rigidbody2D bombRb = bombClone.GetComponent <Rigidbody2D>(); bombRb.velocity = new Vector2(ownerRb.velocity.x / 1.5f, ownerRb.velocity.y / 1.1f); //Rigidbody2D shellRb = shellClone.GetComponent<Rigidbody2D>(); bombTimer = bombDelay + Time.time; return(true); } return(false); }
//[Header("WeaponProperties")] public override FireState Fire() { Transform isInView = isEnemySubInView(); if (isInView) { target = isInView; } if (target) { if (!target.gameObject.activeInHierarchy) { target = null; } } if (Time.time >= fireTimer) { Transform torpClone = Poolable.Get <GuidedTorpedo>(() => Poolable.CreateObj <GuidedTorpedo>(projectilePrefab.gameObject), spawnLocation.position, Quaternion.identity).transform; int layerValue = whatAreOurProjectiles.layermask_to_layer(); TrailRenderer projTrail = torpClone.GetComponent <TrailRenderer>(); projTrail.material = layerValue == 8 ? t1Mat : t2Mat; torpClone.gameObject.layer = layerValue; projTrail.Clear(); GuidedTorpedo torp = torpClone.GetComponent <GuidedTorpedo>(); torp.target = target; torp.whatIsTarget = whatIsTarget; torpClone.gameObject.layer = layerValue; torpClone.GetComponent <Rigidbody2D>().velocity = owner.up * torp.Speed / 2f * Time.deltaTime; torpClone.up = owner.up; fireTimer = delayBetweenFire + Time.time + Random.Range(-delayBetweenFire / 5f, delayBetweenFire / 3.4f); fireSound.Play(); return(FireState.Fired); } else { return(FireState.OnDelay); } }
private void Fire() { GameObject arrowClone = Poolable.Get(() => Poolable.CreateObj(arrowPref.gameObject), arrowPool.NameOfKey); arrowClone.transform.position = firePos.position; arrowClone.transform.rotation = transform.rotation; EnemyArrow enArrow = arrowClone.GetComponent <EnemyArrow>(); arrowClone.GetComponent <Rigidbody2D>().velocity = arrowSpeed * transform.up * -1f; enArrow.lifeTime = arrowLifeTime + Time.time; enArrow.dmg = dmg; AudioMaster.Instance.Play("ArrowFire"); if (objectContainer) { arrowClone.transform.parent = objectContainer; } attackTimer = attackDelay + Time.time; }
private Transform GetUnit(UnitSettings newUnit) { Transform retunit = null; if (newUnit.unitPrefab.GetComponent <AircraftThatWorksWithWeapon>()) { retunit = Poolable.Get <AircraftThatWorksWithWeapon>(() => Poolable.CreateObj <AircraftThatWorksWithWeapon>(newUnit.unitPrefab.gameObject), playerBaseSpawn.position, newUnit.unitPrefab.rotation).transform; } else if (newUnit.unitPrefab.GetComponent <StrikeFighterThatWorksWithWeapon>()) { retunit = Poolable.Get <StrikeFighterThatWorksWithWeapon>(() => Poolable.CreateObj <StrikeFighterThatWorksWithWeapon>(newUnit.unitPrefab.gameObject), playerBaseSpawn.position, newUnit.unitPrefab.rotation).transform; } else if (newUnit.unitPrefab.GetComponent <StrategicBomberThatWorksWithWeapon>()) { retunit = Poolable.Get <StrategicBomberThatWorksWithWeapon>(() => Poolable.CreateObj <StrategicBomberThatWorksWithWeapon>(newUnit.unitPrefab.gameObject), playerBaseSpawn.position, newUnit.unitPrefab.rotation).transform; } else if (newUnit.unitPrefab.GetComponent <CarrierModule>()) { retunit = Poolable.Get <FrigateThatWorksWithWeapon>(() => Poolable.CreateObj <FrigateThatWorksWithWeapon>(newUnit.unitPrefab.gameObject), playerBaseSpawn.position, newUnit.unitPrefab.rotation).transform; } else if (newUnit.unitPrefab.GetComponent <FrigateThatWorksWithWeapon>()) { retunit = Poolable.Get <FrigateThatWorksWithWeapon>(() => Poolable.CreateObj <FrigateThatWorksWithWeapon>(newUnit.unitPrefab.gameObject), playerBaseSpawn.position, newUnit.unitPrefab.rotation).transform; } else if (newUnit.unitPrefab.GetComponent <SubmarineThatWorksWithWeapon>()) { retunit = Poolable.Get <SubmarineThatWorksWithWeapon>(() => Poolable.CreateObj <SubmarineThatWorksWithWeapon>(newUnit.unitPrefab.gameObject), playerBaseSpawn.position, newUnit.unitPrefab.rotation).transform; } else if (newUnit.unitPrefab.GetComponent <BallisticSubmarineThatWorksWithWeapon>()) { retunit = Poolable.Get <BallisticSubmarineThatWorksWithWeapon>(() => Poolable.CreateObj <BallisticSubmarineThatWorksWithWeapon>(newUnit.unitPrefab.gameObject), playerBaseSpawn.position, newUnit.unitPrefab.rotation).transform; } else if (newUnit.unitPrefab.GetComponent <DestroyerThatWorksWithWeapon>()) { retunit = Poolable.Get <DestroyerThatWorksWithWeapon>(() => Poolable.CreateObj <DestroyerThatWorksWithWeapon>(newUnit.unitPrefab.gameObject), playerBaseSpawn.position, newUnit.unitPrefab.rotation).transform; } else if (newUnit.unitPrefab.GetComponent <PatrolBoatThatWorksWithWeapon>()) { retunit = Poolable.Get <PatrolBoatThatWorksWithWeapon>(() => Poolable.CreateObj <PatrolBoatThatWorksWithWeapon>(newUnit.unitPrefab.gameObject), playerBaseSpawn.position, newUnit.unitPrefab.rotation).transform; } return(retunit); }
private Transform GetPlane() { Transform planeClone = null; if (currentPlane.GetComponent <AircraftThatWorksWithWeapon>()) { //Debug.Log("1"); planeClone = Poolable.Get <AircraftThatWorksWithWeapon>(() => Poolable.CreateObj <AircraftThatWorksWithWeapon>(currentPlane.gameObject), aircraftSpawnPoint.position, transform.rotation, null).transform; } else if (currentPlane.GetComponent <StrikeFighterThatWorksWithWeapon>()) { //Debug.Log("2"); planeClone = Poolable.Get <StrikeFighterThatWorksWithWeapon>(() => Poolable.CreateObj <StrikeFighterThatWorksWithWeapon>(currentPlane.gameObject), aircraftSpawnPoint.position, transform.rotation, null).transform; } else if (currentPlane.GetComponent <StrategicBomberThatWorksWithWeapon>()) { //Debug.Log("3"); planeClone = Poolable.Get <StrategicBomberThatWorksWithWeapon>(() => Poolable.CreateObj <StrategicBomberThatWorksWithWeapon>(currentPlane.gameObject), aircraftSpawnPoint.position, transform.rotation, null).transform; } return(planeClone); }
public override FireState Fire() { if (target) { if (!target.gameObject.activeInHierarchy) { target = null; return(FireState.Failed); } if (Time.time > fireTimer) { Transform missileClone = Poolable.Get <GuidedSSMissile>(() => Poolable.CreateObj <GuidedSSMissile>(projectilePrefab.gameObject), new Vector3(spawnLocation.position.x + Random.Range(-0.2f, 0.2f), spawnLocation.position.y, spawnLocation.position.z), Quaternion.identity).transform; int layerValue = whatAreOurProjectiles.layermask_to_layer(); missileClone.gameObject.layer = layerValue; TrailRenderer projTrail = missileClone.GetComponent <TrailRenderer>(); projTrail.material = layerValue == 8 ? t1Mat : t2Mat; projTrail.Clear(); GuidedSSMissile missile = missileClone.GetComponent <GuidedSSMissile>(); missile.target = target; missile.whatIsTarget = whatIsTarget; missile.BoostStage(); fireTimer = delayBetweenFire + Time.time; fireSound.Play(); //soundMngr.PlayEnviroSound(spawnLocation.gameObject, "missile1", 10f); return(FireState.Fired); } else { return(FireState.OnDelay); } } else { return(FireState.Failed); } }
public override FireState Fire() { bool isTargVisual = CheckIfLookingAtTarget(lookCheckRange); if (isTargVisual) { if (Time.time > fireTimer) { Transform missileClone = Poolable.Get <GuidedAAMissile>(() => Poolable.CreateObj <GuidedAAMissile>(projectilePrefab.gameObject), spawnLocation.position, owner.rotation).transform; int layerValue = whatAreOurProjectiles.layermask_to_layer(); missileClone.gameObject.layer = layerValue; GuidedAAMissile missile = missileClone.GetComponent <GuidedAAMissile>(); missile.whatIsTarget = whatIsTarget; missile.target = target; TrailRenderer projTrail = missileClone.GetComponent <TrailRenderer>(); projTrail.material = layerValue == 8 ? t1Mat : t2Mat; projTrail.enabled = true; fireTimer = delayBetweenFire + Time.time + Random.Range(-delayBetweenFire / 5f, delayBetweenFire / 3.4f); fireSound.Play(); return(FireState.Fired); } else { if (!target.gameObject.activeInHierarchy) { target = null; return(FireState.Failed); } return(FireState.OnDelay); } } else { return(FireState.Failed); } }