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); }
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); }