![]() |
Ответ: Опять проблемы.
Не связывался в B3D 2D-картинками.. Не знаю про скорости 2D-алгоритмов.
Я в delphi так делал: 1) у камня есть позиция x,y и высота,ширина. 2) потом можно проверить попала точка курсора (при клике) в позицию камня +-высота +-ширина: если (x_камня+ширина<x_курсора>x_камня-ширина) и (y_камня+высота<y_курсора>y_камня-высота) Так. Пишу быстро на словах. Код:
UpdateStones(); обновляем камни |
Ответ: Опять проблемы.
Не-не-не. Я не про то. Я про коллизию игрока с камнем:)
Если делать как я, то будет возможность проникновения игрока в камень, если зажать например клавишу вверх и вниз. А и ещё, на чистом дельфи сложно TDS в одиночку сделать? |
Ответ: Опять проблемы.
Цитата:
Для 2D - попробуй BlitzMAX. |
Ответ: Опять проблемы.
По-моему, пока здесь дело не в компиляторе, а в представление как это должно работать:) Но мне больше никаких идей в голову не идёт. Как я не пытался, игрок всё равно может проникать через камни:)
|
Ответ: Опять проблемы.
Так знает ли кто-нибудь как сделать камень действительно твёрдым, чтобы проходить в него не было возможности?
|
Ответ: Опять проблемы.
Так, я переделал немного перемещение игрока, но всё равно игрок может проникнуть в камни
Код:
If KeyDown(200) Then |
Ответ: Опять проблемы.
Делай в 3д.
Создаешь квад с текстурой камня, добавляешь ему коллизию и все гуд. |
Ответ: Опять проблемы.
Что-то как-то громоздко выглядит. Переменных много меняется.
Чисто теоретически: -жмутся кнопки - меняется вектор перемещения, растет скорость -не жмутся - скорость падает. Прежде чем сдвигать игрока в очередной раз, надо проверять место по новым координатам, если там камень, то сдвиг не делать, а обнулять скорость. Останется проблема "проскакивания" препятствий на слишком большой скорости из-за слишком больших скачков за шаг (на 10-20 пикселов например). Тогда можно не только проверять координаты следующего шага, а еще брать пару точек между старой и новой координатой. |
Ответ: Опять проблемы.
Можно ли подробнее о векторном перемещении?
И если делать в 3D как сделать так, чтобы создавалась иллюзия что игра двухмерная? |
Ответ: Опять проблемы.
Имею ввиду, что где-то в программе есть две переменные (или больше, по числу измерений пространства) типа deltax, deltay. В которых хранится сдвиг координат игрока на текущий шаг/кадр. И еще отдельно скорость speed#.
Потом, в момент сдвига координаты игрока суммируются с координатами сдвига: px# = px + deltax*speed# py# = py + deltay*speed# Расчет удобно производить в дробных числах, а для отрисовки графики потом откидывать дробную часть. Пример: Влево-вверх: deltax=-1; deltay=-1 Вправо-вверх: deltax=1; deltay=-1 Вниз: deltax=0; deltay=1 Ну и вариации, в зависимости от нужд. Можно тоже дробями сделать. |
Ответ: Опять проблемы.
Спасибо! А такое "предсказывание" следующего шага не сильно на производительность влиять будет?
|
Ответ: Опять проблемы.
Лишний if? Нет.
Собственно ничего сильно не меняется. Производительность сжирают громоздкие переборы и обработки сложных вычислений или больших объемов данных. Сильнее всего на производительность влияет необходимость перебирать каждый кадр все камни, для проверки на столкновение с каждым. Но от этого уже никуда не деться. (Да и камней вряд ли будет ОЧЕНЬ много. :)) Все трехмерные функции типа "коллизий" тоже этим занимаются. |
Ответ: Опять проблемы.
Хотя да, 20 камней уж точно потянет:)
Еще появился вопрос с редактором уровней. Есть ли какой-нибудь не громоздкий способ? По-моему это делается как-то с двухмерным массивом, но вряд ли это правильно:) |
Ответ: Опять проблемы.
Игры всякие бывают. Где-то удобнее строить по клеточкам. Там к месту массив.
Когда объекты не привязаны к клеткам, а игрок движется произвольно, то есть все объекты на уровне свободные и закреплены своими координатами, уровень удобно хранить в файле как список этих самых объектов, с координатами и углами поворота, если надо. Ну а в редакторе надо только мышью (чем угодно :)) расставить объекты на карте, и потом записать в файл. |
Ответ: Опять проблемы.
Спасибо.
И, надеюсь, последний вопрос:) Как расчитывается FPS? |
Часовой пояс GMT +4, время: 19:25. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot