|
3D-программирование Вопросы, касающиеся программирования 3D мира |
23.08.2006, 18:19
|
#1
|
Знающий
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений (для 0 пользователей)
|
Клик на объекте
Господа, я никак не возьму в толк, каким образом отслеживать клик 2д-курсора на ёнтити. Запутался в командах. Пик не пик, пикед не пикед... Нужно чтобы при нажатии на объект происходило определенное действие. Разъясните мне способ?
Благодарю за внимание.
|
(Offline)
|
|
23.08.2006, 18:38
|
#2
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Re: Клик на объекте
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
23.08.2006, 18:41
|
#3
|
Знающий
Регистрация: 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
|
Знающий
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений (для 0 пользователей)
|
Re: Клик на объекте
Благодарю. Теперь я разобрался... Только возник новый вопрос. Как теперь клик на 2д-картинке проверять? Сверять координаты курсора?
|
(Offline)
|
|
23.08.2006, 20:19
|
#5
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Re: Клик на объекте
Вообще говоря - да.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
23.08.2006, 22:02
|
#6
|
Знающий
Регистрация: 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
|
.
Регистрация: 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
|
Знающий
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений (для 0 пользователей)
|
Re: Клик на объекте
все по прежнему. Если сначала кликнуть на любом месте, а потом не кликая навести курсор на нужный объект, то картинка все равно рисуется...
|
(Offline)
|
|
24.08.2006, 06:45
|
#9
|
Гигант индустрии
Регистрация: 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
|
Знающий
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений (для 0 пользователей)
|
Re: Клик на объекте
Tormoz спасибо. Я бы не додумался поставить переменную с моей прямой извилиной . Кстати, с прошедшим тебя .
|
(Offline)
|
|
24.08.2006, 13:28
|
#11
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Клик на объекте
Поменяй менстами:
If PickedEntity()=item
и
If MouseHit(1)
И всё будет пучком =)
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:19.
|