Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 11.01.2012, 22:33   #16
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Опять проблемы.

Не связывался в B3D 2D-картинками.. Не знаю про скорости 2D-алгоритмов.

Я в delphi так делал: 1) у камня есть позиция x,y и высота,ширина.
2) потом можно проверить попала точка курсора (при клике) в позицию камня +-высота +-ширина:
если (x_камня+ширина<x_курсора>x_камня-ширина) и (y_камня+высота<y_курсора>y_камня-высота)
Так. Пишу быстро на словах.

UpdateStones(); обновляем камни
DrawImage cursor, mx, my
И сперва игроку отобрази курсор, потом вычисляй что он (курсор) натворит.
(Offline)
 
Ответить с цитированием
Старый 12.01.2012, 13:38   #17
Nikich
Бывалый
 
Регистрация: 21.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

Не-не-не. Я не про то. Я про коллизию игрока с камнем
Если делать как я, то будет возможность проникновения игрока в камень, если зажать например клавишу вверх и вниз.
А и ещё, на чистом дельфи сложно TDS в одиночку сделать?
(Offline)
 
Ответить с цитированием
Старый 12.01.2012, 19:29   #18
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Опять проблемы.

Сообщение от Nikich Посмотреть сообщение
А и ещё, на чистом дельфи сложно TDS в одиночку сделать?
Намного лучше для 3D - Blitz3D.

Для 2D - попробуй BlitzMAX.
(Offline)
 
Ответить с цитированием
Старый 12.01.2012, 20:15   #19
Nikich
Бывалый
 
Регистрация: 21.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

По-моему, пока здесь дело не в компиляторе, а в представление как это должно работать Но мне больше никаких идей в голову не идёт. Как я не пытался, игрок всё равно может проникать через камни
(Offline)
 
Ответить с цитированием
Старый 13.01.2012, 13:22   #20
Nikich
Бывалый
 
Регистрация: 21.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

Так знает ли кто-нибудь как сделать камень действительно твёрдым, чтобы проходить в него не было возможности?
(Offline)
 
Ответить с цитированием
Старый 14.01.2012, 09:40   #21
Nikich
Бывалый
 
Регистрация: 21.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

Так, я переделал немного перемещение игрока, но всё равно игрок может проникнуть в камни
If KeyDown(200)  Then
col1=1
speed#=speed#+0.1
a=2
b=1
y=y-speed#
EndIf
If KeyDown(208)  Then
col1=2
speed#=speed#+0.1
a=2
b=1
y=y+speed#
EndIf
If KeyDown(205) Then
col1=3
speed#=speed#+0.1
a=1
b=0
x=x+speed#
EndIf
If KeyDown(203) Then
col1=4
speed#=speed#+0.1
a=1
b=0
x=x-speed
EndIf
If KeyDown(205) And KeyDown(200) Then 
col1=5
speed#=speed#+0.1
a=5
b=2
EndIf
If KeyDown(203) And KeyDown(200) Then 
col1=6
speed#=speed#+0.1
a=7
b=3
EndIf
If KeyDown(205) And KeyDown(208) Then 
col1=7
speed#=speed#+0.1
a=9
b=4
EndIf
If KeyDown(203) And KeyDown(208) Then 
col1=8
speed#=speed#+0.1
a=11
b=5
EndIf
If speed#>5 speed#=5
If speed#<0 speed#=0
If KeyDown(203)=0 And KeyDown(208)=0 And KeyDown(205)=0 And KeyDown(200)=0 Then speed#=0
...
If ImagesCollide(gert,x,y,frames,m\stone,m\x,m\y,0) speed=speed-5
...
(Offline)
 
Ответить с цитированием
Старый 14.01.2012, 11:19   #22
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,888
Написано 1,183 полезных сообщений
(для 3,292 пользователей)
Ответ: Опять проблемы.

Делай в 3д.
Создаешь квад с текстурой камня, добавляешь ему коллизию и все гуд.
(Offline)
 
Ответить с цитированием
Старый 14.01.2012, 13:09   #23
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Опять проблемы.

Что-то как-то громоздко выглядит. Переменных много меняется.
Чисто теоретически:
-жмутся кнопки - меняется вектор перемещения,
растет скорость
-не жмутся - скорость падает.

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

Останется проблема "проскакивания" препятствий на слишком большой скорости из-за слишком больших скачков за шаг (на 10-20 пикселов например). Тогда можно не только проверять координаты следующего шага, а еще брать пару точек между старой и новой координатой.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 14.01.2012, 14:00   #24
Nikich
Бывалый
 
Регистрация: 21.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

Можно ли подробнее о векторном перемещении?
И если делать в 3D как сделать так, чтобы создавалась иллюзия что игра двухмерная?
(Offline)
 
Ответить с цитированием
Старый 14.01.2012, 14:06   #25
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Опять проблемы.

Имею ввиду, что где-то в программе есть две переменные (или больше, по числу измерений пространства) типа deltax, deltay. В которых хранится сдвиг координат игрока на текущий шаг/кадр. И еще отдельно скорость speed#.

Потом, в момент сдвига координаты игрока суммируются с координатами сдвига:
px# = px + deltax*speed#
py# = py + deltay*speed#
Расчет удобно производить в дробных числах, а для отрисовки графики потом откидывать дробную часть.

Пример:
Влево-вверх: deltax=-1; deltay=-1
Вправо-вверх: deltax=1; deltay=-1
Вниз: deltax=0; deltay=1

Ну и вариации, в зависимости от нужд. Можно тоже дробями сделать.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (14.01.2012)
Старый 14.01.2012, 15:44   #26
Nikich
Бывалый
 
Регистрация: 21.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

Спасибо! А такое "предсказывание" следующего шага не сильно на производительность влиять будет?
(Offline)
 
Ответить с цитированием
Старый 14.01.2012, 15:54   #27
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Опять проблемы.

Лишний if? Нет.
Собственно ничего сильно не меняется. Производительность сжирают громоздкие переборы и обработки сложных вычислений или больших объемов данных.

Сильнее всего на производительность влияет необходимость перебирать каждый кадр все камни, для проверки на столкновение с каждым. Но от этого уже никуда не деться. (Да и камней вряд ли будет ОЧЕНЬ много. )
Все трехмерные функции типа "коллизий" тоже этим занимаются.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 14.01.2012, 16:14   #28
Nikich
Бывалый
 
Регистрация: 21.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

Хотя да, 20 камней уж точно потянет
Еще появился вопрос с редактором уровней. Есть ли какой-нибудь не громоздкий способ? По-моему это делается как-то с двухмерным массивом, но вряд ли это правильно
(Offline)
 
Ответить с цитированием
Старый 14.01.2012, 16:37   #29
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Опять проблемы.

Игры всякие бывают. Где-то удобнее строить по клеточкам. Там к месту массив.

Когда объекты не привязаны к клеткам, а игрок движется произвольно, то есть все объекты на уровне свободные и закреплены своими координатами,
уровень удобно хранить в файле как список этих самых объектов, с координатами и углами поворота, если надо.
Ну а в редакторе надо только мышью (чем угодно ) расставить объекты на карте, и потом записать в файл.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (14.01.2012)
Старый 14.01.2012, 17:11   #30
Nikich
Бывалый
 
Регистрация: 21.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Опять проблемы.

Спасибо.
И, надеюсь, последний вопрос Как расчитывается FPS?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 16:49.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com