Raycast2D не сталкивается со стеной - PullRequest
1 голос
/ 26 июня 2019

У меня есть этот код

        RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.right, Mathf.Infinity, LayerMask.NameToLayer("Wall"));
        Debug.DrawRay(transform.position, Vector2.right);

        if(hit.collider != null)
        {
            Debug.Log("Wall");
        }

и это стена, с которой я хочу, чтобы она столкнулась с
https://i.imgur.com/CLu3r5s.png
Но когда я запускаю, луч отладки проходит прямо через стену, но яне получить сообщение назад

1 Ответ

0 голосов
/ 26 июня 2019

Raycast использует маску, способ, которым работает ваш код RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.right, Mathf.Infinity, LayerMask.NameToLayer("Wall"));

требует незначительного изменения

try RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.right, Mathf.Infinity, ~1<<LayerMask.NameToLayer("Wall"));

1 << сдвигает биты,~ делает комплимент </p>

Это отражено в документах raycast о единстве (хотя оно указано в разделе 3d, оно по-прежнему применяется https://docs.unity3d.com/ScriptReference/Physics.Raycast.html)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...