чтобы не делать куча исключений и других проблем? Хотел бы научиться правильному написанию кода, чтобы не создавать говнокод. Буду благодарен за помощь и советы по этому вопросу.
private void CheckGround()
{
Collider2D[] collider = Physics2D.OverlapCircleAll(transform.position, isGroundSize);
isGrounded = collider.Length > 1;
if (!isGrounded) State = States.jump;
}
Как выходит красное форматирование? Оно само так форматируется?
. Не понял вопроса? Я знаю что мой вопрос, слишком сложный, и звучит как, Научите меня программировать правильно, и такое надо с репетиторами или менторами проходить, но а я говнюк, пытаюсь такой большой вопрос задать там, где этого не следует.😅
Я про вот это походу)
Он у меня не красный, это три обратных ковычки где русская Ё ставишь три в начале и три в конце
Способ не самый оптимизированный, лучше пускать рейкаст вниз и смотреть есть ли там обьект с типом 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 - Не самый оптимизированный, лучше использовать рейкаст, но что касаемо твоего случая то вот вариант
Только нужно будет создать скрипт Ground и повесить на все Ground Обьекты
И чем твой вариант отличается от исходного?
Тем что он проверяет любое вхождение в список коллайдеров
Ну это то что я сделал сам бы, я просто хотел понять, говнокод у меня или нет. Хотя даже не так, я уверен что у меня говонокод, так как я впервые работаю над проектом, хоть и своим. и то что ты мне скинул, такой же код и такие же решения, которые я бы использовал, но все равно спасибо
Твой вариант же проверяет что любой коллайдер зайдет и для тебя это будет причиной что ты на земле) Даже если перед тобой будет стоять коробка или стена но под тобой не будет земли
да я знаю, и я бы создал бы точно такую же проверку. Повторюсь. я хотел понять как писать лучше, чем я сейчас, ай ладно проехали.
Сделай новый физический слой с землёй и пускай потом рейкасты для проверки на этом слое
Вот вариант с Raycast) https://pastebin.com/Yqdv7qQp
Обсуждают сегодня