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