Задать вопрос
Zefirot
@Zefirot

Почему Raycast даёт ложный результат?

Мне нужно проверить есть ли ли что-то под объектом, делаю простую проверку
private Vector3 Vector3Down{ get { return new Vector3(transform.position.x, (transform.position.y - 3f), transform.position.z); }}
private bool RayDown(Vector3 v){
        bool r = false;
        if(Physics.Raycast(v, Vector3Down, 0.1f)){ r = true; }
        Debug.DrawLine(v, Vector3Down, Color.red);     
        Debug.Log("Ray => " + r);
        return r;
        }

вот так это выглядит
62bd7a13dd7f8362290248.jpeg
62bd7b51c21e7507621469.png
чётко видно что луч проходит через другой объект, а значит метод должен возвращать true, но он возвращает false...
на первой картинке с края объекта пускал луч, на второй с центра, в обоих случаях false.
у обоих объектов есть коллайдеры и тело.
Подскажите почему возвращает false? Должно же true так как луч упирается в другой объект...
  • Вопрос задан
  • 97 просмотров
Подписаться 1 Простой 9 комментариев
Решения вопроса 1
@DrCreeper
В Physics.Raycast второй параметр - это не конечная точка, а направление луча. Попробуйте
r = Physics.Raycast(v, Vector3.down, 1f)); вместо if(Physics.Raycast(v, Vector3Down, 0.1f)){ r = true; }
Линия не совпадает с результатом рейкаста
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы