Danro/Assets/Resources/Scripts/Projectiles/PhysicsProjectile.cs

34 lines
979 B
C#

using UnityEngine;
public class PhysicsProjectile : BasicProjectile
{
protected override void OnEnable()
{
remainingPierce = maxPierce;
if (maxLifetime > 0f)
Invoke(nameof(Despawn), maxLifetime);
}
public override void Launch(Vector2 direction, float speed = -1f, GameObject owner = null, float ignoreOwnerTime = 0.1f)
{
this.owner = owner;
launched = true;
Vector2 dir = direction.sqrMagnitude > 0.0001f ? direction.normalized : Vector2.right;
float finalSpeed = (speed > 0f) ? speed : initialSpeed;
rb.simulated = true;
rb.bodyType = RigidbodyType2D.Dynamic;
rb.linearVelocity = Vector2.zero;
rb.angularVelocity = 0f;
rb.AddForce(finalSpeed * rb.mass * dir, ForceMode2D.Impulse);
transform.right = dir;
if (owner != null && ignoreOwnerTime > 0f)
StartCoroutine(IgnoreOwnerTemporarily(owner, ignoreOwnerTime));
}
}