|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Записки начинающего Игродела
Доброго времени суток все кто читает мой текст. Я зарегистрировался совсем недавно, хотя давно уже пользуюсь ресурсами вашего форума для самообучения, однако, как оказалось, учусь я слишком медленно. Дело в том, что мне надо в течение двух недель закончить курсовую по программированию и это без учета, что другие предметы сдавать надо. Но ладно, это моя проблема и не буду грузить ею )
Итак, суть. Я создаю игру. 2D слэшер. Как я понимаю это достаточно простая игрушка, ибо все что я хочу, это небольшая локация 800 пикс шириной и 300 высотой. Есть анимированный герой, который сражается с толпами мобов прибывающих с двух сторон экрана. Детали игры таковы: - у Героя есть шкала жизни и ярости. Жизнь имеет пассивную регенерацию. Ярость заполняется при нанесении урона мобам и в три раза быстрее заполняется при получении урона от мобов. - Герой может бегать, прыгать, а кнопкой down еще и защищаться мечом. - Герой получает опыт за убийство мобов и за определенное количество опыта он получает уровни. За уровни получает бонусы, что дают ему преимущество (например, если кто-то играл - Crimsonlands. Там тоже есть за уровни бонусы, которые дают увеличенные жизни, регенерацию и т.д.) - у Героя по мимо обычной атаки есть одна единственная спец. атака, которой можно воспользоваться при полном заполнении шкалы злости. - с повышением уровня героя, я хочу попытаться сделать увеличение силы приходящих монстров, а так же их количество. В принципе, это всё. Единственное, я еще хотел повставлять звук, - фоновая музыка, реплика героя, когда у него мало жизни, реплика героя когда он делает спец.атаку реплика когда умирает, реплика когда получает уровень. Так же сделать главное меню и таблицу рекодров, - сколько продержался и убил, а так же заработанный лвл игроков. Вот... У меня есть основа, но я все еще разбираюсь с движением героя и происходит это... Весьма туго. Я бы не обращался и сделал бы всё сам, но у меня поджимают сроки и потому, я прошу вашего времени и помощи в моем проекте. Единственное что я из всего этого сделал, это фон и способность героя бегать по форме, что, конечно, вас может не впечатлить. Исходный код или проще, - сам исходник я могу скинуть если согласитесь мне помочь, - не хочу тему загружать. Заранее благодарю за любую подсказку. |
#2
|
||||
|
||||
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
||||
|
||||
Цитата:
Благодарю. |
#4
|
||||
|
||||
Цитата:
- Как вывести изображение на форму? - Как сделать перемещение изображения на форме в зависимости от нажатых клавиш? - Как сделать анимацию (изменяющуюся картинку)? ... Все конкретные вопросы предварительно задаются гуглу, и только если ответа там нет - пишутся здесь. Вопросы, ответ на которые вряд ли удастся получить (не конкретные): - Как сделать, чтобы герой мог бить монстров? - Как сделать, чтобы герой прокачивался? ... Пока что я не вижу ни одного вопроса в теме. Как следствие, и ответить ничего не могу. Задавай вопросы, будем обсуждать. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 13.05.2013 в 18:24. |
#5
|
||||
|
||||
Да, Баргест, прошу прощения, Вы правы.
Я буду задавать вопросы по мере продвижения, так, я думаю, будет удобней. На данном этапе у меня проблема с прыжками. Я гуглил ответ на вопрос, как разработать гравитацию (обычное равноускоренное движение) и сделать её глобальной процедурой, дабы, если герой находится в воздухе, он всегда возвращался на исходную координату Y. Я сделал подобие гравитации, однако у меня оно нагло зависло. А при попытке сделать самостоятельное, плавное падение с ускорением, - действие происходит моментально. Так же я все еще не могу разобраться как сделать "карточку" персонажа и монстра. То есть количество жизни, сила атаки. Позвольте я покажу исходник, может Вы сможете что-то подсказать? тык - у форума почему-то загрузчик ошибает. Примечание:Ссылку обновил. Последний раз редактировалось Царь, 13.05.2013 в 19:23. |
#6
|
||||
|
||||
Цитата:
Разумеется, нужно сделать проверку столкновений, но в данном случае все объекты можно считать круглыми, тогда столкновения считаются просто. Столкновение с землей - расстояние от центра окружности до прямой меньше радиуса, с другими предметами - расстояние между двумя центрами окружностей меньше суммы их радиусов. Цитата:
Такие вопросы надо по-хорошему решать на этапе проектирования. И ответ на них можно найти, если правильно сам вопрос поставить. А для этого нужно описать, что должно происходить, в виде структур данных и методов их обработки. Делать такие вещи после начала написания кода - получить кучу проблем при дальнейшей доработке. Но уже, собственно, поздно. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 13.05.2013 в 19:29. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Царь (14.05.2013)
|
#7
|
||||
|
||||
Понял. Сейчас попробую инициализировать
Последний раз редактировалось Царь, 13.05.2013 в 19:29. |
#8
|
|||
|
|||
Цитата:
- горизонтальное x = x0 + Vx0 * t - g * t^2 / 2 - вертикальное y = y0 + Vy0 * t Пардон, перепутал вертикальное (ускорение вниз) движение с горизонтальным (ускорения нет). x = x0 + Vx0 * t y = y0 + Vy0 * t - g * t^2 / 2 Последний раз редактировалось AlexSku, 14.05.2013 в 11:45. |
Этот пользователь сказал Спасибо AlexSku за это полезное сообщение: | ||
Царь (14.05.2013)
|
#9
|
||||
|
||||
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
#10
|
||||
|
||||
Я, как бы, осуществил гравитацию. Мой персонаж действительно "плавно" спускается с небес на землю. Но есть одно большое "но". Эта зараза ни в какую отказывается плавно подниматься в воздух. Моментально вверх и только потом плавный спуск. Задержка действует на всю программу.
Возможно я что-то упустил, или просто не знаю, - как сделать задержку? Как осуществить время t в ваших формулах? А так, идея очень хороша. |
#11
|
|||
|
|||
Цитата:
Плавное снижение (сначала ускорение, а потом переход к постоянной скорости) получается за счёт введения новой силы сопротивления воздуха. Она пропорциональна скорости и направлена всегда против движения. Коэффициент можете подобрать (зависит от массы тела и эффективной площади рассеяния, точнее сказать, аэродинамических характеристик). |
Этот пользователь сказал Спасибо AlexSku за это полезное сообщение: | ||
Царь (14.05.2013)
|
#12
|
||||
|
||||
Сомневаюсь, что в такой простенькой игре нужно сопротивление воздуха.
Цитата:
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Царь (14.05.2013)
|
#13
|
||||
|
||||
Премного благодарен за пояснение работы физики - после пятого удара головой об стену мне все же удалось сообразить как это всё осуществить и он таки прыгает, - красиво и эффектно )
Хотя все же я так и не понял, как с помощью DXInput добиться приращение ускорения, ибо он при нажатии выполняет процедуру один раз. - Может это глупый вопрос, но как с помощью компонентов ДелфиХ осуществить наложение маски? Я искал по интернету, но там в основном сделано с помощью обычных компонентов Делфи. Но если так, как тогда их объединить два способа вместе? Или такое невозможно? - И вот теперь главный вопрос, который поможет осуществлять действия в дальнейшем, - как сделать задержку на действия? К примеру, персонаж прыгнул и надо, что бы он секунду задержался, а не прыгал как сумасшедший. Так же пригодится для осуществления задержки при атаках. Функция sleep однозначно не подходит, ибо тормозит всё приложение. |
#14
|
||||
|
||||
Цитата:
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Царь (14.05.2013)
|
#15
|
||||
|
||||
Есть готовые физ. движки, только геометрию им задавай.
Например движок Newton. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Царь (14.05.2013)
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|