Script that calls the function(Attached to GameObject):
using UnityEngine;
public class Strong_Punch_Card : MonoBehaviour, IAbility_Use
{
private Hitbox_Module HitBoxM_Reference;
private void Awake()
{
HitBoxM_Reference = new Hitbox_Module();
}
public void Use_Ability(Humanoid_Stats Entity_Stats)
{
if (Entity_Stats.StunnedTime > 0 || Entity_Stats.IsUsingAbility == true) return;
GameObject Character = Entity_Stats.gameObject;
Vector3 HPosition = Character.transform.position + Character.transform.forward * 2;
Vector3 HSize = new Vector3(2f, 2f, 3f);
Quaternion HRotation = Character.transform.rotation;
Collider[] HitboxReturns = HitBoxM_Reference.Create_Box_Hitbox(HPosition, HSize, HRotation);
}
}
Script that has the function(not attached to any GameObject):
using UnityEngine;
using UnityEngine.TextCore.Text;
public class Hitbox_Module : ScriptableObject
{
public GameObject Box_Hitbox;
public Collider[] Create_Box_Hitbox(Vector3 Size, Vector3 Position, Quaternion Rotation)
{
if (Box_Hitbox == null || Size == null || Position == null) return null;
Collider[] HitBox_Victims = Physics.OverlapBox(Position, Size/2, Rotation);
if (Box_Hitbox != null)
{
GameObject NewHitBox = Instantiate(Box_Hitbox, Position, Rotation);
NewHitBox.transform.localScale = Size;
}
return HitBox_Victims;
}
}