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

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

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

14 ответов

30 просмотров

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

Никита-Батурин Автор вопроса
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
Твой вариант же проверяет что любой коллайдер зайд...

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

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

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

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

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

Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Это переведённый текст с английского. Я не говорю на русском, но могу использовать переводчик Телеграм. Приветствую! Я начинающий веб-разработчик и все еще учусь. В настояще...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
2
А не хотим ли мы развлечься? 😉 Но так чтобы с пользой для наших профессиональных навыков?? 👨‍🎓👩‍🎓 Предлагаю на октябрь запланировать тестовый запуск новой командной игры "Игр...
Andrii Kurdiumov
2
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
5
у кого сколько оперативы на базе данных ?
АДИЛЬБЕК
4
Через бот апи возможно получить ID стикерпака? Не ссылку.
Vexylon [АФК до 09.09]
5
Привет Хочу сделать аналог iCloud’а для своих проектов, чтобы пользовательская информация хранилась в облаке, была доступна во всех сервисах, её можно было подсасывать везде)...
Виталий
9
В тг можно спарсить всех кто пишет в группе? Если список участников скрыт
S
3
код Event::listen('cms.page.display', function (&$content, $slug, $page, $html) { if (is_object($content)) { dump($content); } else { dump($s...
Point 111
3
Доброе утро, мультиязычные сайты делал кто-нибудь? Какие подводные камни? Нужно чего нибудь допом ставить? Как поступить? В теории сделать две папки ru en и туда кидать страни...
Racoon Mitya
2
Карта сайта