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

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

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

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

Ответ
 
Опции темы
Старый 14.01.2009, 02:16   #1
Lavatar
AnyKey`щик
 
Регистрация: 13.01.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Выбор объекта, как сделать?

Здорова, такой вопросик:
Создал кучу мешей и теперь надо организовать их выбор, там у меня чувак бродит-вид от первого лица, надо чтобы при наведении мыши (то бишь прицела) объект подсвечивался (то есть было видно, что на него навели мышь), а при нажатии ЛКМ осуществлялась его деактивация (причем если он не нажал ЛКМ и отвел прицел в сторону-тоже деактивация), а также какой либо счетчик считает его выбранным. Причем надо чтобы это происходило 1 раз, а потом сколько не наводи, не щелкай - ничего не происходит. Как бы один раз использовал - и все...
Уже голову сломал - и все безрезультатно, не получается...
(Offline)
 
Ответить с цитированием
Старый 14.01.2009, 02:29   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Выбор объекта, как сделать?

CameraPick ?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 14.01.2009, 21:35   #3
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Re: Выбор объекта, как сделать?

))) делай каконить пик - потом всё что хошь, а потом поменый переменную котору проверял при пике на что-то другое (ну чтоб тока 1 раз можно было использовать)
(Offline)
 
Ответить с цитированием
Старый 14.01.2009, 23:37   #4
Lavatar
AnyKey`щик
 
Регистрация: 13.01.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Выбор объекта, как сделать?

Да, реализовывал выбор через CameraPick, вот функция:
Function MouseTest()
Local mx#,my#
mx#=MouseX()
my#=MouseY()
Local pick

pick=CameraPick (camera,mx#,my#); выбирает объект, находящийся в области просмотра камеры и координатах mx и my (в данном случае указателя мыши)
If pick<>0 Then ;если указатель мыши находится на объекте
SelectEntity PickedEntity()
If MausHitR Then; если нажата правая клавиша мыши
DeleteTex PickedEntity();
EndIf

If MausHitL Then
SelectBox PickedEntity()
EndIf

EndIf
End Function

А вот функции SelectEntity PickedEntity(), DeleteTex PickedEntity(), SelectBox PickedEntity() у меня реализовать никак не получалось, уже как только не пробовал...
(Offline)
 
Ответить с цитированием
Старый 15.01.2009, 00:19   #5
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Re: Выбор объекта, как сделать?

Graphics3D 800,600,32,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

light=CreateLight()
cam=CreateCamera()
MoveEntity cam,0,0,-30

Type cube
Field scale#
Field cube
Field work
Field life
Field x#
Field y#
Field col1
Field col2
Field col3
End Type


Function nCreateCube()
c.cube = New cube
c\scale = Rnd(.5,1.4)
c\cube=CreateCube()
c\work=1
c\life=100
c\x=Rnd(-20,20)
c\y=Rnd(-20,20)
c\col1=Rnd(255)
c\col2=Rnd(255)
c\col3=Rnd(255)

ScaleEntity c\cube,c\scale,c\scale,c\scale
EntityColor c\cube,c\col1,c\col2,c\col3
PositionEntity c\cube,c\x,c\y,0
EntityPickMode c\cube,1
End Function







Repeat

If MouseHit(1)
pick=CameraPick(cam,MouseX(),MouseY())

ent = pick
For c.cube = Each cube
If pick=c\cube
EntityColor c\cube,255,0,0
c\work=0

EndIf
Next 
EndIf



For c.cube = Each cube
If c\work=0
c\life=c\life-1
If c\life=<0
FreeEntity c\cube
Delete c
EndIf
EndIf
Next





If KeyHit(57)
For cik=1 To 5
ncreatecube()
Next
EndIf

UpdateWorld
RenderWorld


Text 20,20,pick
Flip


Until KeyHit(1)
End
(Offline)
 
Ответить с цитированием
Старый 16.01.2009, 11:08   #6
Lavatar
AnyKey`щик
 
Регистрация: 13.01.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Выбор объекта, как сделать?

Разобрался в твоем коде, хорошо сделан, только не совсем то... Видишь тут какая проблема, у тебя кубы исчезают после отметки, а надо сделать такую ситуацию: Допустим на доме решетка, и мне надо проверить целая ли она, я подхожу, визуально осматриваю, а после осмотра щелкаю на нее (причем когда я навожу на нее курсор-она подсвечивается). Она помечается как осмотренная, т.е. заносится в какой-то счетчик и перестает реагировать на наведение курсора и на щелчки ЛКМ. При этом если я не щелкаю на нее, а просто отвел курсор в сторону она перестает подсвечиваться, а если еще раз навел - опять подсвечивается, пока не щелкну на ней ЛКМ... такая вот задачка Решетка то никуда не девается после осмотра
Кстати я только начал программировать, с графикой вроде разобрался, а в типах и движении - вообще тяжело дается
(Offline)
 
Ответить с цитированием
Старый 17.01.2009, 10:58   #7
Alex_Noc
Разработчик
 
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений
(для 289 пользователей)
Ответ: Выбор объекта, как сделать?

Тип присвой обьектам пикнутым новый и все - в чем проблема то
(Offline)
 
Ответить с цитированием
Старый 17.01.2009, 13:42   #8
Lavatar
AnyKey`щик
 
Регистрация: 13.01.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Выбор объекта, как сделать?

Алекс, NitE спасибо, получилось, что хотел...
(Offline)
 
Ответить с цитированием
Старый 17.01.2009, 22:21   #9
Alex_Noc
Разработчик
 
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений
(для 289 пользователей)
Ответ: Выбор объекта, как сделать?

в боке спасибо нада говорить ---> вон тама кнопярочка
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Lavatar (28.01.2009)
Старый 18.01.2009, 11:27   #10
Damp
Знающий
 
Регистрация: 12.07.2007
Сообщений: 297
Написано 50 полезных сообщений
(для 133 пользователей)
Ответ: Выбор объекта, как сделать?

Только лучше не использовать CameraPick каждый цикл, на некоторых картах будут тормоза.
Лучше LinePick , при виде от 1-ого лица это не сложно.
(Offline)
 
Ответить с цитированием
Старый 28.01.2009, 01:01   #11
Alex_Noc
Разработчик
 
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений
(для 289 пользователей)
Ответ: Выбор объекта, как сделать?

А неужели не видно что не каждый цикл используеться пик , а определяеться после клика мыши
(Offline)
 
Ответить с цитированием
Старый 28.01.2009, 02:52   #12
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Re: Выбор объекта, как сделать?

да лучше вообще блиц не использовать, тормозит уж очень...
(Offline)
 
Ответить с цитированием
Старый 28.01.2009, 13:06   #13
Lavatar
AnyKey`щик
 
Регистрация: 13.01.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Выбор объекта, как сделать?

Нет, не тормозит... тут еще проблема наклюнулась, создаю забор, с помощью CopyMesh размножаю, а копиям ПикМод не присваивается и получается, что только самый последний пролет на выбор реагирует, а остальной забор - нет. Перерисовывать с помощью каждый раз загружать объект неохота, там координатов много высчитывать. Может кто знает, как эту проблему решить:
.Zabor
; Создание забора через MESH объект===========================
fundament=CreateCube()
	PositionMesh fundament, 0,0,0 
	ScaleMesh fundament,.16,.3,2
	PaintMesh fundament,brush5 
stolb=CreateCube(): stolb2=CreateCube()
	PositionMesh stolb, xzab,0.5,zzab-9
        PositionMesh stolb2, xzab,30,zzab-7.2
	ScaleMesh stolb,.2,2,.2 :ScaleMesh stolb2,.25,.1,.25
	PaintMesh stolb,brush6: PaintMesh stolb2,brush6 
ograda=CreateCube ()
	PositionMesh ograda, xzab,1.32,zzab
	ScaleMesh ograda,.0,1.3,2
	PaintMesh ograda,brush7
verx=LoadMesh ("Data\objects\verx.3ds")
	PositionMesh verx, -.07,1.9,-1.35
	ScaleMesh verx,1,1,1.2: PaintMesh verx,brush11

 ; объединение разных составляющих забора в один объект===========
;AddMesh stolb,fundament: AddMesh fundament,ograda
AddMesh stolb2,ograda: AddMesh verx,ograda: AddMesh stolb,ograda

FreeEntity stolb: FreeEntity stolb2:  FreeEntity verx

;рисуем колючую проволоку
	Koluch=CreateCylinder (28,False)
	PaintMesh Koluch,BrushKoluch: RotateMesh Koluch,90,0,0
	ScaleMesh Koluch,0.2,.2,1.8: BrushFX BrushKoluch,16
	
; Рисуем забор при помощи заданных ранее MESH ===========================================
PositionMesh ograda,-20.4,0,-18.3
PositionMesh Koluch,-20.4,3.1,-18.15
PositionMesh fundament,-20.4,0.1,-18.15
EntityFX Koluch,16: EntityPickMode ograda,2
EntityPickMode Koluch,2: EntityPickMode fundament,2
	For a=1 To 10
	CopyMesh ograda: CopyMesh Koluch: CopyMesh fundament
	PositionMesh ograda,0,0,4: PositionMesh Koluch,0,0,4
        PositionMesh fundament,0,0,4
	EntityType ograda,8: EntityType Koluch,8
        EntityFX Koluch,16: EntityPickMode ograda,2
        EntityPickMode Koluch,2: EntityPickMode fundament,2
Next 
CopyMesh ograda: CopyMesh Koluch: CopyMesh fundament
PositionMesh ograda,0,0,16: PositionMesh Koluch,0,0,16
PositionMesh fundament,0,0,16
EntityType ograda,8: EntityType Koluch,8: EntityFX Koluch,16: EntityPickMode ograda,2: EntityPickMode Koluch,2
EntityPickMode fundament,2
For a=11 To 5
	CopyMesh ograda: CopyMesh Koluch: CopyMesh fundament
	PositionMesh ograda,0,0,4: PositionMesh Koluch,0,0,4
        PositionMesh fundament,0,0,4
	EntityType ograda,8: EntityType Koluch,8: EntityFX Koluch,16
        EntityPickMode ograda,2: EntityPickMode Koluch,2
        EntityPickMode fundament,2
Next
(Offline)
 
Ответить с цитированием
Старый 28.01.2009, 15:58   #14
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Re: Выбор объекта, как сделать?

код читать лень но должно быть что-то вроде
zabor=loadmesh("shit")
for i=1 to 10
compymesh zabor
entitypickmode zabor,2,2
next
(Offline)
 
Ответить с цитированием
Старый 28.01.2009, 18:02   #15
Lavatar
AnyKey`щик
 
Регистрация: 13.01.2009
Сообщений: 8
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Выбор объекта, как сделать?

Чего-то не догоняю, откуда у entitypickmode zabor,2,2 второй параметр - цифра? В хелпе нарисовано, что он может быть только TRUE или FALSE...
В том-то и проблема, что я примерно так и делал... только объект я не грузил, а с помощью кубиков и текстур создавал... НО НЕ РАБОТАЕТ!!!
Еще вопрос - у меня игрок пока состоит из пивота, к которому крепятся камера и прямоугольник. Пытался определить расстояние от игрока до объекта (PickedEntity ()) с помощью EntityDistance (player,PickedEntity ()) - возвращает почему-то ноль, на какое бы расстояние к объекту не подходил... причем в качестве игрока проверял и камеру, и пивот и прямоугольник...
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор ПК Hamaus Болтовня 4 29.10.2009 17:23
Выбор монитора impersonalis Болтовня 2 12.06.2007 20:11
Растягивающаяся рамка с проверкой на выбор объекта mike1983 Полезные функции 9 13.04.2007 21:42
выбор mp3 плеера jimon Болтовня 7 06.04.2007 23:05
выбор щелчком мыши smersh 3D-программирование 3 07.03.2007 00:16


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


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