Пример #1
0
        private void OnCollisionEnter(Collision collision)
        {
            Enemy        enemyStates = collision.transform.GetComponentInParent <Enemy>();
            StateManager states      = collision.transform.GetComponentInParent <StateManager>();

            if (!hitShield)         // If we did NOT hit a shield...
            {
                if (states != null) // If we hit the player...
                {
                    RaycastHit hitInfo;
                    Debug.DrawRay(transform.position + Vector3.up / 2, transform.forward * 2f, Color.red, 5);
                    Physics.Raycast(transform.position + Vector3.up / 2, transform.forward, out hitInfo, 2f);

                    if (hitInfo.collider != null)
                    {
                        if (hitInfo.collider.gameObject.name != "Shield")
                        {
                            states.TakeDamage(damageValue, transform, true, true);
                        }
                    }
                }
            }
            Destroy(gameObject, 1);
            gameObject.SetActive(false);
            GetComponent <Collider>().enabled = false;
            //GetComponent<MeshRenderer>().enabled = false;
        }
Пример #2
0
        private void OnTriggerEnter(Collider other)
        {
            Enemy        enemyStates = other.transform.GetComponentInParent <Enemy>();
            StateManager states      = other.transform.GetComponentInParent <StateManager>();

            if (enemyStates == null && states == null) // If target hit is not a damageable character...
            {
                return;
            }

            if (GetComponentInParent <StateManager>()) // If we (the weapon) are held by the player...
            {
                if (enemyStates != null)               // If we hit an enemy...
                {
                    if (playerSpiritSystem.spiritEquipped != null)
                    {
                        ChooseDamageType(playerSpiritSystem.spiritEquipped, enemyStates);
                    }
                    else
                    {
                        enemyStates.TakeDamage(damage);
                    }
                }
            }

            if (states != null) // If we hit the player...
            {
                int crit = Random.Range(1, 101);

                if (crit <= critChance)
                {
                    Debug.Log("Crit!");
                    states.TakeDamage(critDamage, GetComponentInParent <Enemy>().gameObject.transform, true, true);
                    GetComponentInParent <WeaponHook>().CloseDamageCollider();
                }
                else
                {
                    states.TakeDamage(damage, GetComponentInParent <Enemy>().gameObject.transform, true, true);
                    GetComponentInParent <WeaponHook>().CloseDamageCollider();
                }
            }
        }