void UpdateTarget() { raycastedPoint = CameraHelper.WalkablePoint(); if (raycastedPoint.Equals(Vector3.negativeInfinity)) { return; } var nextTarget = CameraUtils.RaycastOnlyType(Trigger.Context.Type, 1 << (int)Trigger.Context.Layer); if (nextTarget && nextTarget.transform == playerTransform) { nextTarget = null; } else if (!nextTarget) { nextTarget = PhysicsUtils.NearestCollider( raycastedPoint, Config.SelectorRadius, target => target.GetComponent(Trigger.Context.Type) && target.transform != playerTransform, 1 << (int)Trigger.Context.Layer ); } if (nextTarget) { if (nextTarget != currentTarget) { SelectTarget(nextTarget.transform); } } else if (currentTarget) { UnselectTarget(); } if (!currentTarget) { selectorSprite.transform.position = raycastedPoint; } if (Input.GetKeyUp(Config.FinishKeyCode)) { if (nextTarget) { Trigger.OnTrigger(new Inputs.Event { GameObject = nextTarget.gameObject, Point = Vector3.zero }); } } }