forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Коллизия картинок (http://forum.boolean.name/showthread.php?t=7228)

Petrofan 24.10.2008 15:33

Коллизия картинок
 
Вложений: 1
Наконец разобрался с Data и возник вопрос.
У меня есть карта но как я смогу передвигаться и собирать разные фрукты без коллизии. В 3D это проще делать, а тут ... не знаю что делать
и не знаю как делается прыжок игрока. Я тут загрузил свою игру помогите разобраться. У каждого фрукта свой плюс к бонусу груша=+20 яблоко=10
получается что для каждой картинки своя коллизия ?

zheland 25.10.2008 08:52

Ответ: Коллизия картинок
 
Вложений: 1
Много знаешь, но не умеешь пока использовать знания.

Есть функции:
ImagesOverlap (image1,x1,y1,image2,x2,y2)
ImagesCollide (image1,x1,y1,frame1,image2,x2,y2,frame2)
Но в данной игре, быстрее будет если вручную.
Во вложении пример который доделал за вчерашний вечер.

Прыжок—вверх
Map—ячейка на которой ты стоишь
Остальное поймёшь.

Petrofan 28.10.2008 09:45

Ответ: Коллизия картинок
 
Слушай а как сделать чтобы после прикасании с фруктом он исчезал ведь не прикольно когда подходишь к объекту очки добавляются, а фрукт не исчезает
Огромное спасибо drunnik за помощь !

Petrofan 28.10.2008 09:56

Ответ: Коллизия картинок
 
все я понял если это правильно добавил такую строку

If map(Player_X,Player_Y)=9 Then SCOPIES=SCOPIES+10 map(Player_X,Player_Y)=0

и объект становится 0

zheland 28.10.2008 22:21

Ответ: Коллизия картинок
 
1:
Код:

Global gfxSparks, frmSparks, tmrSparks
SetBuffer BackBuffer()
gfxSparks=LoadAnimImage("c:ProgramFilesBlitzBasicsamplesGraphicsspark.bmp",32,32,0,3)
MaskImage gfxSparks,255,0,255
While Not KeyHit(1)
Cls
If MilliSecs() > tmrSparks + 100 Then
tmrSparks=MilliSecs()
frmSparks=( frmSparks + 1 ) Mod 3
End If
DrawImage gfxSparks,MouseX(),MouseY(),frmSparks
Flip
Wend

Это ты из справки переписал :) , а отредактировал не полностью ;) .

В начале
Код:

MaskImage gfxSparks,255,0,255
замени на
Код:

MaskImage gfxSparks,0,0,0
Появится маска
Надо маскировать не фиолетовый(255,0,255) цвет, а чёрный(0,0,0)
И вообще замени gfxSparks на Player,
frmSparks на Player_frm.
Код:

Player=LoadAnimImage("image\POC.bmp",32,32,0,3)
MaskImage Player,0,0,0
...
If MilliSecs() > Player_frm + 100 Then
Player_frm=MilliSecs()
Player_frm=( Player_frm + 1 ) Mod 3
End If
DrawImage Player,Player_PX,Player_PY,Player_frm

Так будет понятнее и тебе и всем ;)

2:
Заметь, я удалил тогда из текста лишнее.
Изменил порядок изображений ради удобства.
Алгоритм проверки столкновения не идеален, его надо доделывать.

3:
Неплохо двигаешься, нужно набираться опыта. :)


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

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