Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Обычная проблема новичка при создании игры

Обычная проблема новичка при создании игры

Macmep_UogaПользовательwww20 фев. 201815:31#0
Привет. Я только начинаю учить Unity и поэтому прошу простить некоторые ошибки. Я хочу создать игру вроде StackJump (ссылки ниже). Ну и вот никак не могу понять, что именно и как я должен использовать для создания такой игры. Должен ли я использовать физику (что вроде как логичнее), или лучше перемещать объекты, изменяя их позиции вручную в Update () и FixedUpdate().

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

[url = https://play.google.com/store/apps/details?id=io.voodoo.stackjump] Игра на PlayMarket[/url]

Видео игры

werasaimonПостоялецwww20 фев. 201821:43#1
Ну там есть физика , а именно ускорение! Но я не думаю что ради такой простой игры тебе нужна физика ,
Хватит колизии и примитивного ускорения!
Macmep_UogaПользовательwww21 фев. 201810:51#2
Т.е. если я правильно понимаю, то RigidBody у всех движущихся блоков должны быть isKinematic?

А еще вопрос, как определить в какую сторону блок ударил игрока? Ведь коллайдер будет реагировать и когда игрок прыгнет на блок, и когда блок ударит игрока вбок?

foxesПостоялецwww21 фев. 201811:16#3
Можно обойтись парой расчетов, но для этого надо знать хоть какую то математику/геометрию.

Macmep_Uoga
> Т.е. если я правильно понимаю, то RigidBody у всех движущихся блоков должны
> быть isKinematic?
RigidBody тебе вообще не понадобиться. Но если все таки использовать такой подход, то он должен быть только на персонаже.

Помимо этого для реализации этой игры можно использовать хитрость, чтобы реализовать ее механику достаточно 2-х кирпичей с коллайдерами.

Macmep_Uoga
> А еще вопрос, как определить в какую сторону блок ударил игрока? Ведь коллайдер
> будет реагировать и когда игрок прыгнет на блок, и когда блок ударит игрока
> вбок?
Этим всем занимается RigidBody. Проверить это можно по событию OnCollisionEnter.

Правка: 21 фев. 2018 11:49

Macmep_UogaПользовательwww21 фев. 201812:12#4

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

> Помимо этого для реализации этой игры можно использовать хитрость


Можно чуть подробнее об этом?

Правка: 21 фев. 2018 12:12

foxesПостоялецwww21 фев. 201812:40#5
Macmep_Uoga
> Можно чуть подробнее об этом?
Macmep_Uoga
> Нужна самая общая информация, нет необходимости подробно описывать процесс
> разработки.
Подробно общими словами? Более подробно я просто выложу реализацию этой игры.
Macmep_UogaПользовательwww21 фев. 201814:41#6
Я же не прошу выложить код программы. Просто чуть подробнее о вашем видении реализации
foxesПостоялецwww21 фев. 201815:24#7
Позняк метаться

http://www.panteleymonov.ru/files/game_example/stack_jump/

+ Показать
+ Показать

Правка: 21 фев. 2018 19:41

Macmep_UogaПользовательwww7 ноя. 201816:55#8
foxes
Блин, ну чувак. Это понятно и ежу ясно. Вопрос сейчас в другом. (для начала взгляни на видео выше)

Смотри, у меня есть объекты Player(это прыгающая фигня) и Block(прилетающие блоки). Как понять, что Block ударяет в левый или же в правый бок прыгающей фигни (Player). Да, да, можно сделать RayCast, но вот в случае такой ситуации как на рисунке райкаст покажет, что Block ударил вправый бок Player, хотя удар пришелся в "дно" Player -а и он должен тупо приземляиться, вместо того, чтобы фигачить в закат. Вопрос, как определить в какую сторону блок ударяет в коллайдер игрока?

blocks | Обычная проблема новичка при создании игры

Правка: 7 ноя. 2018 16:57

FairgonПользовательwww7 ноя. 201817:36#9
возьми просто три колайдера: ноги, левый и правый бок
и с них принимай колизию, проще не куда

Правка: 7 ноя. 2018 17:36

foxesПостоялецwww18 ноя. 20181:49#10
Macmep_Uoga
Ну тут нюанс механики. Я не вижу в этом критичной проблемы, ты выбрал куб коллайдер вместо шара. Если проблема в том как это решить на кубах то даже описанная тобой проблема не факт что имеется. Во первых тут действует сила тяжести, которая действует на центр и заставить кубик опрокинуться, потому что он не стоит центром на кубике. Без физики тут как раз проблемы нету, рейкаст тут покажет точку касания, которую можно посчитать как слева так и снизу - это уже от твоей ручной математики зависеть будет. Но я бы с такой реализацией не парился, а взял то что уже привел в пример выше. Да и на видео там тоже таких проблем нету, там его все время в бок сталкивали без всяких прыжков, а прыгает он достаточно быстро чтобы замечать такую проблему. И определить в какую сторону его спихнули можно хотя бы по тому - в какую сторону двигался сам блок с которым столкнулся персонаж, но вот для чего это делать мне не понятно.

Правка: 18 ноя. 2018 2:51

/ Форум / Программирование игр / Физика

2001—2018 © GameDev.ru — Разработка игр