Как правильно осуществить проверку наличия земли под персонажем в Unity,

чтобы не делать куча исключений и других проблем? Хотел бы научиться правильному написанию кода, чтобы не создавать говнокод. Буду благодарен за помощь и советы по этому вопросу.

private void CheckGround()
{
Collider2D[] collider = Physics2D.OverlapCircleAll(transform.position, isGroundSize);
isGrounded = collider.Length > 1;
if (!isGrounded) State = States.jump;
}

14 ответов

32 просмотра

Как выходит красное форматирование? Оно само так форматируется?

Никита-Батурин Автор вопроса
Utepkaliev Alemkhan
Как выходит красное форматирование? Оно само так ф...

. Не понял вопроса? Я знаю что мой вопрос, слишком сложный, и звучит как, Научите меня программировать правильно, и такое надо с репетиторами или менторами проходить, но а я говнюк, пытаюсь такой большой вопрос задать там, где этого не следует.😅

Никита-Батурин Автор вопроса
Utepkaliev Alemkhan
Я про вот это походу)

Он у меня не красный, это три обратных ковычки где русская Ё ставишь три в начале и три в конце

Способ не самый оптимизированный, лучше пускать рейкаст вниз и смотреть есть ли там обьект с типом Ground - так ты избежишь проверок на строки, для начало только создай этот скрипт и набрось на всё что является Ground private void CheckGround() { Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, isGroundSize); // собираешь данные по коллайдерам foreach(var collider in colliders) // перебераешь данные { if(collider.gameObject.TryGetComponent(out Ground ground)) // находишь коллайдер с компонентом Ground { isGrounded = true; break; // выходишь из цикла } else { isGrounded = false; } } if (!isGrounded) State = States.jump; }

https://pastebin.com/RaAm7AiQ - Не самый оптимизированный, лучше использовать рейкаст, но что касаемо твоего случая то вот вариант

Utepkaliev Alemkhan
https://pastebin.com/RaAm7AiQ - Не самый оптимизир...

Только нужно будет создать скрипт Ground и повесить на все Ground Обьекты

монобех синглтонович Штарк
И чем твой вариант отличается от исходного?

Тем что он проверяет любое вхождение в список коллайдеров

Никита-Батурин Автор вопроса
Utepkaliev Alemkhan
Только нужно будет создать скрипт Ground и повесит...

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

Никита Батурин
Ну это то что я сделал сам бы, я просто хотел поня...

Твой вариант же проверяет что любой коллайдер зайдет и для тебя это будет причиной что ты на земле) Даже если перед тобой будет стоять коробка или стена но под тобой не будет земли

Никита-Батурин Автор вопроса
Utepkaliev Alemkhan
Твой вариант же проверяет что любой коллайдер зайд...

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

Никита Батурин
Ну это то что я сделал сам бы, я просто хотел поня...

Сделай новый физический слой с землёй и пускай потом рейкасты для проверки на этом слое

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

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

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
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
Карта сайта