예제 #1
0
 private void OnCollisionEnter2D(Collision2D collision)
 {
     if (collision.gameObject.layer == impactLayer && !invulnerable)
     {
         Impacted?.Invoke();
     }
 }
예제 #2
0
        public bool Raycast(Vector3 position, Vector3 direction, out HitscanInfo scanInfo, float maxDistance, Vector3 muzzle)
        {
            scanInfo             = default;
            scanInfo.origin      = position;
            scanInfo.direction   = direction;
            scanInfo.maxDistance = maxDistance;
            scanInfo.muzzle      = muzzle;

            bool success = Physics.Raycast(position, direction, out scanInfo.hitInfo, maxDistance, layerMask);

            scanInfo.success = success;

            // Events processing
            HitscanEventArgs args = new HitscanEventArgs(scanInfo);

            Launched?.Invoke(this, args);
            if (success)
            {
                Impacted?.Invoke(this, args);
            }

            return(success);
        }