Ejemplo n.º 1
0
        private void CheckCollision(Vector3 position)
        {
            RaycastHit hit;

            float   dist      = Vector3.Distance(Transform.position, position);
            Vector3 direction = Transform.position - position;
            Ray     ray       = new Ray(position, direction);

            if (!Physics.Raycast(ray, out hit, dist, _targetMask))
            {
                return;
            }

            Quaternion rot = Quaternion.FromToRotation(Vector3.forward, hit.normal);
            Vector3    pos = hit.point;

            Utility.IEntity affectedEntity = CheckBulletCollision(hit.collider);

            if (affectedEntity != null)
            {
                OnBulletHit();
                OnTargetHit(affectedEntity);
            }

            OnBulletDestroy(hit, true);
        }
Ejemplo n.º 2
0
        protected override void OnTargetHit(Utility.IEntity affectedEntity)
        {
            affectedEntity.ModifyHealth(_damage);

            if (Random.Range(0.0f, 1.0f) <= _impactChance)
            {
                affectedEntity.ApplyForce(Transform.forward * ImpactPower);
            }
        }
Ejemplo n.º 3
0
 private bool IsEntityAffected(Utility.IEntity hittedEntity)
 {
     for (int i = 0; i < _affectedEntities.Count; i++)
     {
         if (_affectedEntities[i].Id == hittedEntity.Id)
         {
             return(true);
         }
     }
     return(false);
 }
Ejemplo n.º 4
0
        protected override void OnTriggerEnter(Collider other)
        {
            Utility.IEntity affectedEntity = CheckBulletCollision(other);

            if (affectedEntity != null)
            {
                OnBulletHit();
                OnTargetHit(affectedEntity);
            }

            OnBulletDestroy(other, true);
        }
Ejemplo n.º 5
0
        protected override void OnTriggerEnter(Collider other)
        {
            Utility.IEntity affectedEntity = CheckBulletCollision(other);
            if ((affectedEntity == null) || IsEntityAffected(affectedEntity))
            {
                return;
            }

            OnBulletHit();
            OnTargetHit(affectedEntity);

            _affectedEntities.Add(affectedEntity);
        }
Ejemplo n.º 6
0
        protected override void OnTargetHit(Utility.IEntity affectedEntity)
        {
            base.OnTargetHit(affectedEntity);

            affectedEntity.ApplyForce(Transform.forward * _impactPower);
        }
Ejemplo n.º 7
0
 protected virtual void OnTargetHit(Utility.IEntity affectedEntity)
 {
     affectedEntity.ModifyHealth(_damage);
 }