Exemplo n.º 1
0
        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
                    });
                }
            }
        }