Вообще, можно сделать и 2Д-движок с энтитями, как в Блице (1 раз создал - оно само рендерится, можно привязывать, отвязывать и прочая хрень), и 3Д-движок с рендером вручную каждого объекта (хотя последнее нахрен никому не сдалось)
Где x,y - координаты пули
ang - угол пули
speed - множитель скорости
А вобще нука сорец в студию!
Сообщение от ABTOMAT
Вообще, можно сделать и 2Д-движок с энтитями, как в Блице (1 раз создал - оно само рендерится, можно привязывать, отвязывать и прочая хрень), и 3Д-движок с рендером вручную каждого объекта (хотя последнее нахрен никому не сдалось)
К слову я в BlitzMax так и делаю.
У каждого обьекта есть Draw() и Update()
А в игре есть:
UpdateGame()
DrawGame()
Где происходят все работы с графикой и логикой.
народ, вы с скролингом уже совсем поехали не туда, все обьекты в мире должны иметь мировые координаты, плюс в мире должна быть камера
вот при рендере просто учитываем координаты камеры и всё, не важно даже 2д или 3д игра
не представляю как надо извращатся чтобы писать игру без абстракции камеры
Сообщений: 228
Написано 61 полезных сообщений (для 191 пользователей)
Ответ: Проблема с 2d пулями
А так через типы я обрабатываю пули у себя в проекте:
; Update Shots
For shot.shot = Each shot
DrawImage shoot,shot\x+LevelX,shot\y+LevelY
shot\sx = sin(shot\ang)
shot\sy = cos(shot\ang)
shot\x = shot\x + shot\sx*shot\speed
shot\y = shot\y + shot\sy*shot\speed
shot\life=shot\life-1
If shot\life<1 Then
;{тут я создаю микровзрыв пули}
Delete shot : Return
EndIf
; проверка столкновения с объектами типа Блок
For Bblock.block = Each block
coll = RectsOverlap(shot\x,shot\y,3,3,Bblock\x,Bblock\y,Bblock\w,Bblock\h)
If coll = True Then
;{тут я создаю микровзрыв пули}
Delete shot : Delete Bbloc : Return
EndIf
Next
Next
где:
LevelX, LevelY - глобальные координаты мира
__________________
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...
Ммм... а в аттач сорец можешь закинуть.
Просто маловато кода, если ты говоришь что у тебя пули движутся вместе с игроком, то надо на этого игрока тоже посмотреть.
Ошибка скорее всего в зависимости LevelX LevelY и PlayerX PlayerY.
У самого такое бывало :/
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
Ответ: Проблема с 2d пулями
В общем попытался в 3D, но че то уже не то получается даже не интересно стало делать. Вот код. Если поможете сделать пули, то буду дальше в 2D делать.
З.Ы. Временно использую картинки ABTOMAT'а, попозже свои нарисую.
З.ЫЫ. Если архив не будет открываться, то переиминуйте в .rar
Сообщений: 473
Написано 131 полезных сообщений (для 257 пользователей)
Re: Проблема с 2d пулями
карочь как я говорил нужно просто к координатам пули прибавлять сдвиг....
и просто необходимо написать свое подобие локальных координат )))
в атаче исправленная версия
Сообщений: 2,893
Написано 1,185 полезных сообщений (для 3,298 пользователей)
Ответ: Проблема с 2d пулями
Illidan, у меня камера это координа игрока, а именно "p\x","p\y". CameraX и CameraY это и есть эти координаты. Я их отнимал от координат пули, но они летели вместе с игроком и пробовал еще пару способов, но нифига не получилось и я забил на это дело и начал в 3D делать, а в 3D мне это дела не понравилось и я забил на игру, но теперь ее (игру) доделаю! В общем спасибо большое!
Кстати, как проверять пули и остальные объекты на столкновение с картинками стены (картинка находятся в массиве)?
Последний раз редактировалось Nex, 13.08.2009 в 08:11.
Сообщений: 473
Написано 131 полезных сообщений (для 257 пользователей)
Re: Проблема с 2d пулями
в фастимедже есть например testrect его за глаза хватит
точка = координата пули
квадрат - тайл со стеной. только оптимизировать не забывай, чтоб не все стены со всеми пулями перепроверялись сразу