예제 #1
0
        private GameObject GetOverlappingWall(Vector3 pos)
        {
            var colliders = new Collider[2];
            var layers    = LayerUtil.GetMask(new[] { Layers.Wall, Layers.Interactible });

            var numColliders = Physics.OverlapSphereNonAlloc(pos, 0.1f, colliders, layers);

            for (int i = 0; i < numColliders; i++)
            {
                if (colliders[i].gameObject == door.gameObject)
                {
                    continue;
                }
                return(colliders[i].gameObject);
            }

            return(null);
        }
예제 #2
0
        private IInteractible GetInteractible()
        {
            var origin = actor.Transform.position;

            origin.y = 1f;

            var  layer = LayerUtil.GetMask(Layers.Interactible);
            bool hit   = Physics.Raycast(origin, actor.Transform.forward, out var hitInfo, 2f, layer);

            if (!hit)
            {
                return(null);
            }

            var interactible = hitInfo.collider.GetComponent <IInteractible>();

            if (interactible == null)
            {
                interactible = hitInfo.collider.GetComponentInParent <IInteractible>();
            }
            return(interactible);
        }