Raycast 不检测击中对象统一 C# 2d

Raycast doesn't detect hitting object unity C# 2d

对 Unity 还很陌生,过去几天我一直在研究 Raycasting。我已经 运行 解决了这个问题,其中光线投射要表示的线没有检测到这已经发生。因此,当 Raycast 线击中对象时,我希望它在控制台上简单地显示 HIT 以表明这是有效的。我觉得它不起作用的原因是我通过调试看到的线路与实际使用的线路不同。

密码是:

void rayCast()
    {
        if (player.transform.position.x <= enemy.transform.position.x)
        {
            RaycastHit2D hitLeft = Physics2D.Raycast(transform.position, -transform.right, rayDistance, 1 << LayerMask.NameToLayer("Player"));
            Vector3 left = transform.TransformDirection(Vector3.left);
            Debug.DrawRay(transform.position, left * rayDistance, Color.green);

            if (hitLeft.collider != null)
            {
                Debug.Log("Player is within range");
            }
            else
            {
                Debug.Log("out of range");
            }
        }


        if (player.transform.position.x >= enemy.transform.position.x)
        {
            RaycastHit2D hitRight = Physics2D.Raycast(transform.position, transform.right, rayDistance, 1 << LayerMask.NameToLayer("Player"));
            Vector3 right = transform.TransformDirection(Vector3.right);
            Debug.DrawRay(transform.position, right * rayDistance, Color.green);

            if (hitRight.collider != null)
            {
                Debug.Log("Player is within range");
            }
            else
            {
                Debug.Log("out of range");
            }
        }
    }

提前感谢您的帮助。

问题在这里:

RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.right, rayDistance, 1 << LayerMask.NameToLayer("Player"));

看起来你总是向右投射光线。您可能希望它左右切换,就像您在画线时所做的那样。