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

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

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

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

Ответ
 
Опции темы
Старый 23.08.2006, 18:19   #1
Valet
Знающий
 
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений
(для 0 пользователей)
Вопрос Клик на объекте

Господа, я никак не возьму в толк, каким образом отслеживать клик 2д-курсора на ёнтити. Запутался в командах. Пик не пик, пикед не пикед... Нужно чтобы при нажатии на объект происходило определенное действие. Разъясните мне способ?


Благодарю за внимание.
(Offline)
 
Ответить с цитированием
Старый 23.08.2006, 18:38   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Клик на объекте

http://www.boolean.name/showthread.php?t=1327
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 23.08.2006, 18:41   #3
axel186
Знающий
 
Регистрация: 07.09.2005
Сообщений: 238
Написано 2 полезных сообщений
(для 2 пользователей)
Re: Клик на объекте

Для этого надо знать две команды..
EntityPick и CameraPick =)
Вот пример:

Graphics3D 640,480,16
SetBuffer BackBuffer()

Camera=CreateCamera()
PositionEntity Camera,0,0,-10

Light=CreateLight()
PositionEntity Light,0,0,-10

Cube=CreateCube()
PositionEntity Cube,3,0,0
EntityPickMode Cube,2
Sphere=CreateSphere()
PositionEntity Sphere,-3,0,0
EntityPickMode Sphere,2

Red#=255
Green#=255
Blue#=255

CRed#=255
CGreen#=255
CBlue#=255

Repeat

Pick%=CameraPick(Camera,MouseX(),MouseY())

EntityColor Sphere,Red#,Green#,Blue#
EntityColor Cube,CRed#,CGreen#,CBlue#

UpdateWorld
RenderWorld

If Pick%=Sphere Then
Text 300,100,"Sphere"

If MouseDown(1) Then
Green#=100
Blue#=100
Else
Red#=255
Green#=255
Blue#=255
EndIf

Else

If Pick%=Cube Then
Text 300,100,"Cube"

If MouseDown(1) Then
CGreen#=100
CBlue#=100
Else
CRed#=255
CGreen#=255
CBlue#=255
EndIf

Else

Text 300,100,"None"

EndIf
EndIf
Flip
Until KeyHit(1)
End
(Offline)
 
Ответить с цитированием
Старый 23.08.2006, 19:21   #4
Valet
Знающий
 
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений
(для 0 пользователей)
Re: Клик на объекте

Благодарю. Теперь я разобрался... Только возник новый вопрос. Как теперь клик на 2д-картинке проверять? Сверять координаты курсора?
(Offline)
 
Ответить с цитированием
Старый 23.08.2006, 20:19   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Клик на объекте

Вообще говоря - да.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 23.08.2006, 22:02   #6
Valet
Знающий
 
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений
(для 0 пользователей)
Re: Клик на объекте

У меня беда. Теперь после клика в любой точке и при наведении на объект без клика картинка все равно рисуется... Что не так?

item_pick=CameraPick(camera,MouseX(),MouseY())

If item_pick=item Then
ShowEntity item_selected
Else
HideEntity item_selected
End If

If item_pick=item Then 
Text 55,25, "вещь"
If MouseHit(1) Then
activate_item_actions=1
End If
EndIf
If activate_item_actions=1 DrawImage take_button,600,250


Заранее спасибо...
(Offline)
 
Ответить с цитированием
Старый 23.08.2006, 22:44   #7
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Клик на объекте

 
item_pick=CameraPick(camera,MouseX(),MouseY()) If item_pick=item Then ShowEntity item_selected Else HideEntity item_selected End If If item_pick=item Then Text 55,25, "вещь" If MouseHit(1) Then activate_item_actions=1 End If EndIf If activate_item_actions=1 DrawImage take_button,600,250
Замени на:
 
item_pick=CameraPick(camera,MouseX(),MouseY()) If PickedEntity()=item ShowEntity item_selected Else HideEntity item_selected EndIf If PickedEntity()=item Text 55,25, "вещь" If MouseHit(1) activate_item_actions=1 EndIf EndIf If activate_item_actions=1 DrawImage take_button,600,250

Совет насчёт Then: на самом деле это лишнее... =)
(Offline)
 
Ответить с цитированием
Старый 23.08.2006, 22:57   #8
Valet
Знающий
 
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений
(для 0 пользователей)
Re: Клик на объекте

все по прежнему. Если сначала кликнуть на любом месте, а потом не кликая навести курсор на нужный объект, то картинка все равно рисуется...
(Offline)
 
Ответить с цитированием
Старый 24.08.2006, 06:45   #9
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Re: Клик на объекте

Делай так:

hit_m_1=MouseHit(1)

.... тут код. Вместо MouseHit(1) подставляй перевменную hit_m_1

в конце цикла сброс переменной:
hit_m_1=0
__________________
(Offline)
 
Ответить с цитированием
Старый 24.08.2006, 13:02   #10
Valet
Знающий
 
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений
(для 0 пользователей)
Хорошо Re: Клик на объекте

Tormoz спасибо. Я бы не додумался поставить переменную с моей прямой извилиной . Кстати, с прошедшим тебя .
(Offline)
 
Ответить с цитированием
Старый 24.08.2006, 13:28   #11
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Клик на объекте

Поменяй менстами:
If PickedEntity()=item
и
If MouseHit(1)
И всё будет пучком =)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Следы на обЪекте BlackDragon 3D-программирование 12 07.08.2007 14:15
загрузка информации об объекте Chuma 3D-программирование 3 28.12.2006 01:33
двойной клик SubZer0 Алгоритмика 2 04.09.2006 09:07


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


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