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);
        }
        private void CreateParentHitboxHandler(Transform parent, string objectName, HitboxType hitboxType, Transform parentRigidbodyTransform)
        {
            HitboxHandler[] handlers            = GetComponentsInChildren <HitboxHandler>();
            HitboxHandler   hitboxTargetHandler = null;

            foreach (HitboxHandler item in handlers)
            {
                if (item.hitboxType == hitboxType)
                {
                    return;
                }
            }



            GameObject geo = new GameObject();

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

            geo.transform.localPosition = Vector3.zero;
            geo.transform.localRotation = Quaternion.identity;
            geo.transform.localScale    = Vector3.one;

            hitboxTargetHandler                 = geo.AddComponent <HitboxHandler>();
            hitboxTargetHandler.hitboxType      = hitboxType;
            hitboxTargetHandler.parentRigidbody = parentRigidbodyTransform.GetComponent <Rigidbody>();

            switch (hitboxType)
            {
            case HitboxType.HEAD:
                hitboxTargetHandler.hitboxColliders.Add(CreateHitboxCollider(geo.transform, "HITBOX_HEAD", hitboxTargetHandler, new Vector3(0f, -0.04f, -0.01f), new Vector3(0.19f, 0.27f, 0.21f), Vector3.zero));
                break;

            case HitboxType.UPPER_BODY:
                hitboxTargetHandler.hitboxColliders.Add(CreateHitboxCollider(geo.transform, "HITBOX_UPPER_BODY", hitboxTargetHandler, new Vector3(0.018f, -0.004f, -0.01f), new Vector3(0.19f, 0.27f, 0.21f), Vector3.zero));
                break;

            case HitboxType.L_ARM:
                hitboxTargetHandler.hitboxColliders.Add(CreateHitboxCollider(leftElbow.transform, "HITBOX_L_Elbow", hitboxTargetHandler, new Vector3(-0.066f, 0.01f, 0.009f), new Vector3(0.288f, 0.095f, 0.08f), Vector3.zero));
                hitboxTargetHandler.hitboxColliders.Add(CreateHitboxCollider(leftShoulder.transform, "HITBOX_L_Shoulder", hitboxTargetHandler, new Vector3(-0.093f, 0.001f, -0.0101f), new Vector3(0.328f, 0.134f, 0.094f), Vector3.zero));
                break;

            case HitboxType.R_ARM:
                hitboxTargetHandler.hitboxColliders.Add(CreateHitboxCollider(rightElbow.transform, "HITBOX_R_Elbow", hitboxTargetHandler, new Vector3(0.1f, 0.006f, 0f), new Vector3(0.288f, 0.085f, 0.07f), Vector3.zero));
                hitboxTargetHandler.hitboxColliders.Add(CreateHitboxCollider(rightShoulder.transform, "HITBOX_R_Shoulder", hitboxTargetHandler, new Vector3(0.089f, 0.004f, 0.004f), new Vector3(0.359f, 0.103f, 0.111f), Vector3.zero));
                break;

            case HitboxType.PROP:
                break;

            case HitboxType.LOWER_BODY:
                hitboxTargetHandler.hitboxColliders.Add(CreateHitboxCollider(geo.transform, "HITBOX_Lower_BODY", hitboxTargetHandler, new Vector3(-0.128f, -0.01f, 0.001f), new Vector3(0.39f, 0.33f, 0.20f), Vector3.zero));
                break;
            }
        }
예제 #3
0
 private void Awake()
 {
     OnFighterSet += () => {
         handler = fighter.GetComponent <HitboxHandler>();
     };
 }