コード例 #1
0
ファイル: EnemyHealth.cs プロジェクト: aksharamurda/ZmbV2
 public override void OnHit(Hit hit)
 {
     base.OnHit(hit);
 }
コード例 #2
0
ファイル: CharacterHealth.cs プロジェクト: aksharamurda/ZmbV2
 public virtual void OnHit(Hit hit)
 {
     Deal(hit.Damage);
 }
コード例 #3
0
ファイル: Grenade.cs プロジェクト: aksharamurda/ZmbV2
        private void explode()
        {
            if (_hasExploded || !_isActivated)
            {
                return;
            }

            _hasExploded = true;

            if (Explosion != null)
            {
                var particle = GameObject.Instantiate(Explosion);
                particle.transform.parent   = null;
                particle.transform.position = transform.position;
                particle.SetActive(true);
            }

            var colliders = Physics.OverlapSphere(transform.position, ExplosionRadius);

            foreach (var collider in colliders)
            {
                if (!collider.isTrigger)
                {
                    var part = collider.GetComponent <BodyPartHealth>();

                    if (part == null)
                    {
                        var closest = collider.transform.position;

                        if (collider.GetType() == typeof(MeshCollider))
                        {
                            if (((MeshCollider)collider).convex)
                            {
                                closest = collider.ClosestPoint(transform.position);
                            }
                        }

                        var vector   = transform.position - closest;
                        var distance = vector.magnitude;

                        if (distance < ExplosionRadius)
                        {
                            Vector3 normal;

                            if (distance > float.Epsilon)
                            {
                                normal = vector / distance;
                            }
                            else
                            {
                                normal = (closest - collider.transform.position).normalized;
                            }

                            var hit = new Hit(closest, normal, CenterDamage * (1 - distance / ExplosionRadius), null, collider.gameObject);
                            collider.gameObject.SendMessage("OnHit", hit, SendMessageOptions.DontRequireReceiver);
                        }
                    }
                }
            }

            GameObject.Destroy(gameObject);
        }