forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Проблема с 2d пулями (http://forum.boolean.name/showthread.php?t=8875)

Nex 11.08.2009 05:46

Проблема с 2d пулями
 
Вот я сделал игру на подобе Крисмосленда, но только со скролингом. И как сделать, что бы пули появлялись в центре экрана (в позиции игрока), но после того как появились, то уже не двигались вместе с игроком (что бы начинал на них действовать "скроллинг")? :crazy:

NitE 11.08.2009 06:07

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

Nex 11.08.2009 06:29

Ответ: Проблема с 2d пулями
 
NitE, судя по твоему посту я не понятно задал вопрос.
В общем у меня 2д игра типа Крисмосленда. Игрок всегда находиться в центре экрана, есть скроллинг это когда все объекты передвигаются, так, что бы было похоже, как будто двигается сам игрок, а не объекты во круг него. И я не могу понять, как сделать, что бы на пули (красные полоски, которыми стреляет игрок) тоже действовал скроллинг. А если более точно, то я создаю пули в позиции игрока и если нажать "идти в перед", то пули подучается летят вместе с игроком и мне надо, как то отвязать "пули" от игрока, что бы они летели сами по себе. :crazy:

NitE 11.08.2009 07:08

Ответ: Проблема с 2d пулями
 
Цитата:

судя по твоему посту я не понятно задал вопрос.
хохо, ещёбы, только третий пост этого не исправил
я не понимаю как можно так объективно мыслить в абсолютно неправильном направлений

возможно поможет выложить кусок кода ? или объяснить что у тебя уже есть и что тебе конкретно непонятно ? (я вот тоже просто никак непонимаю как-же сделать мега-игру, может ктонибудь подскажет ?)

Nex 11.08.2009 07:46

Ответ: Проблема с 2d пулями
 
У меня щас вот так, а мне так не надо ибо пуля движется вместе с игроком.

Мне надо вот так сделать. Стрельнул и пуля движется вместе с мапой, но я не могу понять, как так сделать. И кода у меня много и он очень запутанный:).

В общем вот. :-)

NitE 11.08.2009 08:18

Ответ: Проблема с 2d пулями
 
я опускаю руки и здаюсь...

Nex 11.08.2009 08:39

Ответ: Проблема с 2d пулями
 
Придется пока что забить на это ибо сам вообще не понимаю, как сделать. :(

Illidan 11.08.2009 08:46

Re: Проблема с 2d пулями
 
если это в чистом двад, а не замешанно на трид то нет ничего проще.
прибавляй к параметрам пули величины на которые у тебя происходит скролинг
тоесть все обьекты фона сдвинулись вправо на 1 пиксель то и к X координатам пули прибавляй +1, просто рассматривай пулю как элемент фона

NitE 11.08.2009 08:51

Ответ: Проблема с 2d пулями
 
Цитата:

если это в чистом двад, а не замешанно на трид то нет ничего проще.
отжог ! в 3д вообще ничего ненадо для этого делать, всё само делается ибо 3д

если пост №8 то что ты хотел услышать - я разбегусь головой ап стену

Illidan 11.08.2009 09:04

Re: Проблема с 2d пулями
 
начинай разбегаться)))

Nex 11.08.2009 09:08

Ответ: Проблема с 2d пулями
 
Illidan, я так делал, но получается не то. Пуля создается в другом месте, а мне надо, что бы создавалась по центру (в позиции игрока).
Короче я в этом 2d уже мозг поломал в 3d все на много проще, но мне в 2d хочется сделать. :(
Вот так у меня создается игрок:
Код:

CreatePlayer(GraphicsWidth()/2,GraphicsHeight()/2,180)
Вот так пули (так не правильно):
Код:

If MouseHit (1) Then CreateBullet(bullet,GraphicsWidth()/2,GraphicsHeight()/2,p\turn)
Но если я делаю правильно:
Код:

If MouseHit (1) Then CreateBullet(bullet,GraphicsWidth()/2-CameraX,GraphicsHeight()/2-CameraY,p\turn)
то получается вот, что:

:crazy:

Illidan 11.08.2009 09:23

Re: Проблема с 2d пулями
 
Хто её в другое место перетащил??
с типами работаешь? сдается мне, тебе нужно просто свой код структурировать.
делай так:
создаешь тип игрока(откуда пулять будешь)
создаешь тип пули (создается в координах игрока, на этот тип действует направление выстрела+ сдвиг по скролингу)
создаешь тип фона(тут все обекты сдвигаются только по скролингу)
а вообще поуму в двад все это делается на векторах, можешь на блицселекте в разделе блицмакса статьи посмотреть.
хотя пеши пока в 3д там действительно понятней будет)))

Nex 11.08.2009 09:26

Ответ: Проблема с 2d пулями
 
Ну я уже решил все это дело в 3D сделать, так как я уже запарился с этим 2D. :)

Illidan 11.08.2009 10:02

Re: Проблема с 2d пулями
 
дак прально она у тебя непойми где появляется, ты в функцию "когда прально пишешь" заведомо сдвинутые данные посылаешь))
нужно не при создании, а потом уже каждый кадр обновлять со здвигом

Mhyhr 11.08.2009 12:17

Ответ: Проблема с 2d пулями
 
Цитата:

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

Illidan 11.08.2009 15:17

Re: Проблема с 2d пулями
 
в двад все равно все обьекты надо заного перерисовывать да и в трид тоже если присмтреться

NitE 11.08.2009 20:49

Ответ: Проблема с 2d пулями
 
ага, а если ещё лупу взять то ваще атас !

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

ABTOMAT 11.08.2009 22:15

Ответ: Проблема с 2d пулями
 
Вообще, можно сделать и 2Д-движок с энтитями, как в Блице (1 раз создал - оно само рендерится, можно привязывать, отвязывать и прочая хрень), и 3Д-движок с рендером вручную каждого объекта (хотя последнее нахрен никому не сдалось)

Randomize 11.08.2009 23:11

Ответ: Проблема с 2d пулями
 
Может

x=x+sin(ang)*speed
y=y+cos(ang)*speed

Где x,y - координаты пули
ang - угол пули
speed - множитель скорости

А вобще нука сорец в студию!

Цитата:

Сообщение от ABTOMAT (Сообщение 113871)
Вообще, можно сделать и 2Д-движок с энтитями, как в Блице (1 раз создал - оно само рендерится, можно привязывать, отвязывать и прочая хрень), и 3Д-движок с рендером вручную каждого объекта (хотя последнее нахрен никому не сдалось)

К слову я в BlitzMax так и делаю.
У каждого обьекта есть Draw() и Update()

А в игре есть:
UpdateGame()
DrawGame()
Где происходят все работы с графикой и логикой.

jimon 11.08.2009 23:37

Ответ: Проблема с 2d пулями
 
народ, вы с скролингом уже совсем поехали не туда, все обьекты в мире должны иметь мировые координаты, плюс в мире должна быть камера
вот при рендере просто учитываем координаты камеры и всё, не важно даже 2д или 3д игра

не представляю как надо извращатся чтобы писать игру без абстракции камеры

Illidan 11.08.2009 23:41

Re: Проблема с 2d пулями
 
У автора топика как раз виртуальная камера задана,так что все пучком. А обьекты так или иначе всеравно перерисовываются... такова жисть

Spiderman 12.08.2009 11:45

Ответ: Проблема с 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 - глобальные координаты мира

Randomize 12.08.2009 17:46

Ответ: Проблема с 2d пулями
 
Ммм... а в аттач сорец можешь закинуть.
Просто маловато кода, если ты говоришь что у тебя пули движутся вместе с игроком, то надо на этого игрока тоже посмотреть.

Ошибка скорее всего в зависимости LevelX LevelY и PlayerX PlayerY.
У самого такое бывало :/

Nex 13.08.2009 05:59

Ответ: Проблема с 2d пулями
 
Вложений: 1
В общем попытался в 3D, но че то уже не то получается даже не интересно стало делать. Вот код. Если поможете сделать пули, то буду дальше в 2D делать. :)
З.Ы. Временно использую картинки ABTOMAT'а, попозже свои нарисую. :)
З.ЫЫ. Если архив не будет открываться, то переиминуйте в .rar

Illidan 13.08.2009 07:53

Re: Проблема с 2d пулями
 
Вложений: 1
карочь как я говорил нужно просто к координатам пули прибавлять сдвиг....
и просто необходимо написать свое подобие локальных координат )))
в атаче исправленная версия

Nex 13.08.2009 08:04

Ответ: Проблема с 2d пулями
 
Illidan, у меня камера это координа игрока, а именно "p\x","p\y". CameraX и CameraY это и есть эти координаты. Я их отнимал от координат пули, но они летели вместе с игроком и пробовал еще пару способов, но нифига не получилось и я забил на это дело и начал в 3D делать, а в 3D мне это дела не понравилось и я забил на игру, но теперь ее (игру) доделаю! :-D В общем спасибо большое! :)
Кстати, как проверять пули и остальные объекты на столкновение с картинками стены (картинка находятся в массиве)? :)

Illidan 13.08.2009 09:11

Re: Проблема с 2d пулями
 
в фастимедже есть например testrect его за глаза хватит
точка = координата пули
квадрат - тайл со стеной. только оптимизировать не забывай, чтоб не все стены со всеми пулями перепроверялись сразу

Nex 13.08.2009 16:36

Ответ: Проблема с 2d пулями
 
Попробую сделать, как ты говоришь, но я еще плохо кодю поэтому может и не получиться. :)


Часовой пояс GMT +4, время: 17:51.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot