private Collider CreateHitboxCollider(Transform parent, string objectName, HitboxHandler parentHandler, Vector3 colliderCentre, Vector3 colliderSize, Vector3 localRotation)
        {
            GameObject geo = new GameObject();

            geo.name = objectName;
            geo.transform.SetParent(parent);

            geo.transform.localPosition = Vector3.zero;
            Quaternion rot = Quaternion.Euler(localRotation);

            geo.transform.localRotation = rot;
            geo.transform.localScale    = Vector3.one;

            HitboxColliderHandler colliderHandler = geo.AddComponent <HitboxColliderHandler>();

            colliderHandler.parentHandler = parentHandler;
            BoxCollider boxCol = geo.AddComponent <BoxCollider>();

            boxCol.isTrigger = true;
            boxCol.center    = colliderCentre;
            boxCol.size      = colliderSize;

            if (isPlayer == true)
            {
                geo.layer = 10;
            }
            else
            {
                geo.layer = 11;
            }

            return(boxCol);
        }
        public override void HitObject()
        {
            healthControllerHit = hit.transform.GetComponentInParent<HealthController>();
            if (healthControllerHit != null) //Hit a Player Or AI, WIll not execute any other logic outside of here 
            {
                hittableObjectController = healthControllerHit.GetComponent<HittableObjectController>();
                hittableObjectController.ObjectHit(hit.point, originalFiredPosition);
                HitboxColliderHandler colliderHandler = hit.transform.GetComponent<HitboxColliderHandler>();
                colliderHandler.parentHandler.parentRigidbody.AddForce(colliderHandler.transform.forward * 1000f, ForceMode.Impulse);
                if (Physics.Raycast(rayCastPoint.position, transform.TransformDirection(Vector3.forward), out hit, 1.3f, layerMask)) //Cast a second ray to get the body part to attach too
                {
                    transform.position = hit.point + (transform.forward * weaponItem.arrowBodyHitOffset);
                    transform.SetParent(hit.transform);
                }            

                SubHitboxController hitboxController = hit.collider.GetComponent<SubHitboxController>();
                healthControllerHit.TakeDamage(damage, hitboxController.hitboxType);

                DestroyProjectile();


                return;
            }

            hittableObjectController = hit.transform.GetComponent<HittableObjectController>();
            if (hittableObjectController != null)
            {
                // Debug.Log(3);
                hittableObjectController.ObjectHit(hit.point, -hit.normal);
                transform.position = hit.point;
            }
            DestroyProjectile();
        }
        void AddHitboxToTargetRagdoll(Transform targetTransform, HitboxType hitboxType)
        {
            HitboxColliderHandler colliderHandler = targetTransform.gameObject.AddComponent <HitboxColliderHandler>();

            HitboxHandler[] allHandlers = GetComponentsInChildren <HitboxHandler>();
            foreach (HitboxHandler item in allHandlers)
            {
                if (item.hitboxType == hitboxType)
                {
                    colliderHandler.parentHandler = item;
                }
            }
        }