29 lines
990 B
C#

using UnityEngine;
public class AbilityUser : MonoBehaviour
{
[Header("Refs")]
public ManaManager mana;
public HealthManager health;
public Transform castPoint; // where projectiles spawn
public Camera aimCamera; // for raycasts (optional)
void Reset()
{
aimCamera = Camera.main;
castPoint = transform;
}
// Helpers
public bool TrySpendMana(float amount) => !mana || mana.Spend(amount);
public void HealSelf(float amount) { if (health) health.Heal(amount); }
public bool RaycastAim(out RaycastHit hit, float maxDistance = 50f, LayerMask mask = default)
{
if (!aimCamera) { hit = default; return false; }
return Physics.Raycast(aimCamera.ScreenPointToRay(Input.mousePosition), out hit, maxDistance, mask);
}
public Vector3 Forward() => castPoint ? castPoint.forward : transform.forward;
public Vector3 CastPos() => castPoint ? castPoint.position : transform.position;
}