Ejemplo n.º 1
0
 public void AddHitListener(IHitlistener listener)
 {
     if (this.hitListener == null)
     {
         this.hitListener = listener;
     }
 }
Ejemplo n.º 2
0
        public void Fire(Transform origin, IWeapon weapon, Transform calculationTransform, IHitlistener hitListener)
        {
            if (calculationTransform == null)
            {
                calculationTransform = origin;
            }
            Ray        ray = new Ray(calculationTransform.position, calculationTransform.forward);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit, MaxShotLength))
            {
                ShowShot(origin.position, hit.point);
                var targetCollider = hit.collider.GetComponent <TargetCollider>();
                if (targetCollider != null)
                {
                    Hit tHit = targetCollider.GetOwner <IHittable>().RegisterHit(hit);
                    if (hitListener != null)
                    {
                        hitListener.NotifyHit(tHit, weapon);
                    }
                }
                else if (hitListener != null)
                {
                    hitListener.NotifyHit(Hit.Miss(), weapon);
                }
            }
            else
            {
                if (hitListener != null)
                {
                    hitListener.NotifyHit(Hit.Miss(), weapon);
                }
                ShowShot(origin.position, origin.position + origin.forward * MaxShotLength);
            }
        }