public void ReturnProjectile(GravityGunProjectileController projectile, Type type) { _projectilePools[type].Add(projectile); projectile.transform.rotation = Quaternion.identity; projectile.GetComponent <GravityObjectRigidBody>().ClearAllVelocities(); projectile.GetComponent <GravityObjectRigidBody>().ChangeGravityDirection(Vector2.zero); projectile.gameObject.SetActive(false); var magnetZone = projectile.GetComponentInChildren <MagnetZoneController>(); if (magnetZone) { magnetZone.ClearTrackingData(); } }
public void SpawnProjectile(Vector2 dir, float secondsUntilDestroy, ProjectileControllerType type) { float xValue = dir.x; float yVlaue = dir.y; float angle = Mathf.Rad2Deg * Mathf.Atan2(dir.y, dir.x); GravityGunProjectileController projectileClone = ProjectilePool.Instance.GetProjectile(ProjectilePool.ConvertProjectileControllerTypeToType(type)); projectileClone.transform.position = Reticle.transform.position; projectileClone.Owner = this; projectileClone.SecondsUntilDestroy = secondsUntilDestroy; ChangeGORBGravityDirection(projectileClone.GetComponent <GravityObjectRigidBody>(), dir); projectileClone.GetComponent <GravityObjectRigidBody>().ChangeGravityScale(ShootSpeed); projectileClone.GetComponent <GravityObjectRigidBody>().ClearAllVelocities(); projectileClone.transform.rotation = Quaternion.identity; projectileClone.transform.Rotate(0, 0, angle); projectileClone.OnShot(); }