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; } } }