Всем привет! Никак не могу понять в чем проблема, в

классе Target создается событие на 20 строчке, после чего я обрабатываю его в классе ScoreKeeper, но событие тупо не доходит до него. Все компоненты навешены, но почему то ивент просто не хочет срабатывать. Почему такое может быть?

32 ответов

13 просмотров
Julian-Beletsky Автор вопроса

Для начала удостоверься что рейкаст действительно попадает по объекту с компонентом Target (попадаешь ли в область if по выставленному тобой условию). Проверь по чему попадает рейкаст, возможно просто на том месте, ближе к камере, есть другой объект с коллайдером, на котором он прерывается и не доходит до объекта с компонентом Target. Проверь действительно ли объект с компонентом ScoreKeeper на момент событий клика из класса Target активен/включен/enable.

Так же, для этой задачи, если ты не используешь новую InputSystem можешь посмотреть на эти методы(скриншот). Можно использовать их вместо использованного тобой рейкаста.

Немного не понимаю твою логику hit.collider == this.GetComponent<Collider> Ты говоришь "у объекта, в которого я попал, такой же колайдер как у меня"? Так он никогда и не зайдет сюда

Julian Beletsky
screenshot

Плюс тебе рейкаст надо делать в другом классе Какой-нибудь Raycaster (первое что пришло в голову) И туда пихаешь всю логику из Target и свое равенство == заменяешь на if(hit.collider.TryGetComponent(out Target target)

До инвока не дойдет в любом случае

Roman Salnikov
До инвока не дойдет в любом случае

Тут я видимо что-то не понимаю, почему?

res
Тут я видимо что-то не понимаю, почему?

Я же выше написал Он сравнивает колайдер куда попал и свой колайдер Как он может сам в себя попасть? Да и думаю ему это не надо

Roman Salnikov
Я же выше написал Он сравнивает колайдер куда поп...

Кто сам в себя? Рейкаст не зависит никак из какого места был вызван.

res
Кто сам в себя? Рейкаст не зависит никак из какого...

Да причем тут рейкаст вообще, там дальше ещё одно условие есть

res
Ты про условие с hit?

2 раза же написал об этом)

Roman Salnikov
2 раза же написал об этом)

В этом то и дела что хит это произвольное от рейкаста

res
Кто сам в себя? Рейкаст не зависит никак из какого...

А если рейкастить из центра объекта в первый попавшийся коллайдер, то коллайдер самого объекта не будет первым попавшимся? 🧐

Ibra
А если рейкастить из центра объекта в первый попав...

Будет, насколько я помню, для этого небольшой офсет делаешь, откуда стреляешь

Roman Salnikov
Я тебя вообще не понимаю

Результат рейкаста это структура hit, которая создаётся рейкастом. Если ты в компоненте вызовешь Рейкаст в сторону этого объект он выполнится так как он задумывал.

res
Результат рейкаста это структура hit, которая созд...

Не понимаю к чему ты ведёшь, у него не зайдет в условие, если только он сам в себя не попадет

Ibra
А если рейкастить из центра объекта в первый попав...

Вопрос. Но это в любом случае похоже на баг, этого надо избегать, правильно настраивая layermask.

Roman Salnikov
Не понимаю к чему ты ведёшь, у него не зайдет в ус...

Ещё раз тут нет сам в себя. Компонент не стреляет рейкастами. Рейкаст это отдельная сущность, которая не зависит от место из которого вызвана.

Julian Beletsky
screenshot

А ты дебажил куда луч попадает?

Roman Salnikov
Не понимаю к чему ты ведёшь, у него не зайдет в ус...

А возможно ты просто не заметил, какой он рей пускает. Он кастит луч не от объекта в котором вызывается а он камера по ScreenPointToRay.

Ibra
А ты дебажил куда луч попадает?

Куда нажал ЛКМ по экрану игры от камеры

res
Куда нажал ЛКМ по экрану игры от камеры

Я имею ввиду, он вообще попадает? Может он попадает во что-то другое, а не в тот коллайдер, который ты хочешь

А ещё один вариант, может у тебя 2д игра а ты используешь Physic, а не Physic2D.

res
А ещё один вариант, может у тебя 2д игра а ты испо...

А, я что-то думал это у тебя проблема. х)

Ibra
Я имею ввиду, он вообще попадает? Может он попада...

Если он попадет мышкой в коллайдер, который прикреплен объекту с со скриптом Target, то да

res
Если он попадет мышкой в коллайдер, который прикре...

Вот я и говорю, надо продебажить и проверить) Если всë ок попадает, копать в сторону ивента уже

Ibra
Вот я и говорю, надо продебажить и проверить) Есл...

Ну в коде проблем не должно быть, с большей вероятностью у него проблема на самой сцене

Julian-Beletsky Автор вопроса

А, ну да, я прокидывал просто префаб из папки, сейчас я сравниваю попадание по наличию компонента

Julian Beletsky
А, ну да, я прокидывал просто префаб из папки, сей...

Старый код тоже работает. Просто тебе надо сделать так что бы когда ты спавнишь новый таргет, у тебя была там же ссылка на текстовое поле, и компоненте тектового поля был иницализирующий публичный метод с помощью которого ты туда будет прокидывать именно новый инстанс. заспавленного объекта. Но если у тебя таргетов много такой подход не подойдет. Надо переделывать.

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

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта