Почему объект не обнаруживается Physics2D Raycast в Unity?

Я делаю 2-ю игру в единстве, и мне нужна ваша помощь.

Пример .

Игра состоит в том, что случайным образом создается 9 цветных точек, как показано на картинке. Игрок должен соединить точки соответствующего цвета. Все это я сделал.

Проблема: Как только я нажимаю на одну точку и сразу перехожу к другой для подключения, она подключается не сразу, а примерно через 1 секунду. Если я нажимаю на одну точку и удерживаю около 1 секунды, а затем быстро перехожу к следующей точке, она соединяется.

То есть мне нужно дождаться либо первой точки, либо второй.

Как выясняется, все это из-за коллайдеров и Raycast. У него нет времени на проверку.

Пример моего кода (очень сокращенно):

Vector3 startPos;
Vector3 endPos;

Vector3 mousePos;
Vector2 mousePos2D;
RaycastHit2D hit;

void Update() {

mousePos = Camera.main.ScreenToWorldPoint (Input.mousePosition);
mousePos2D = new Vector2 (mousePos.x, mousePos.y);
hit = Physics2D.Raycast (mousePos2D, Vector2.zero);

// Here comes the creation of the first point and the connection 
if (Input.GetMouseDown(0)) {
if (hit.collider != null) {
color = hit.collider.tag;
startPos = hit.collider.transform.position;
endPos = mousePos2D;
}
}

// Here comes the creation line between dots 
if (Input.GetMouse(0)) {
if (hit.collider != null) {
if (hit.collider.tag == color) {
endPos = hit.collider.transform.position;
// Here is instantiated new line and with startPos and endPos and I set
startPos = endPos;
endPos = mousePos2D;
}
}
}

// Here points are deleted if connected 
if (Input.GetMouseUp(0)) {
    // Nothing important
}
}

Проблема в том, что: в «Input.GetMouseDown (0)», даже если мышь проходит через объект «hit.collider is equal null», и примерно через 1 секунду hit.collider не равен нулю и задает тег цвета.

Пример видео: https://thewikihow.com/video_8x6TSBfBIzc

Весь код скрипта: https://drive.google.com/open?id=1QKRInr26acu-E4zXPUf-DbW0h9zbsnUr

Как решить эту проблему с ожиданием? Почему не подключается сразу?

Физические операции не рекомендуются в методе обновления (в частности, в каждом кадре без условий, как в вашем коде), а в методе FixedUpdate. Это может (но вряд ли) объяснить задержку.

Kamalen 10.08.2018 15:45

Не помогает ;(

John Smith 10.08.2018 15:48

Я обнаружил, что происходит, В обновлении консоли: когда я нажимаю точку>, к точке (0) добавляется 1, и если я держу кнопку нажатой, точка (1) добавляется случайным образом (+7 ... +15) , первый щелчок - объяснение задержки.

John Smith 10.08.2018 15:55

Обнаружил ошибку, оказывается отключил в другом скрипте на 0,5 коллайдера объекта, извините

John Smith 10.08.2018 16:40
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
280
0

Другие вопросы по теме