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

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

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

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

Ответ
 
Опции темы
Старый 24.01.2007, 18:57   #1
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Вопрос Выделение мышкой

Как выделить трехмерный объект мышкой? Через MouseX() и MouseY() не получается..! Я Даже и незнаю че и делать? Подскажите или дайте примерчик.

P.S Заранее благодарен.
(Offline)
 
Ответить с цитированием
Старый 24.01.2007, 19:04   #2
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Выделение мышкой

Ну, если через МаусХ/У не выходит, значит придеццо собраться с духом, сжать зубы покрепче и сделать чв\ерез КамераПик/КамераПрожект.
(Offline)
 
Ответить с цитированием
Старый 24.01.2007, 19:06   #3
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Re: Выделение мышкой

А если не трудно разъясни про CameraPick / CameraProject а то в инглише
не очень то
(Offline)
 
Ответить с цитированием
Старый 24.01.2007, 21:03   #4
Черный крыс
 
Сообщений: n/a
Re: Выделение мышкой

Смотри сэмплы к этим функциям.
 
Ответить с цитированием
Старый 25.01.2007, 01:41   #5
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Выделение мышкой

простой пример:
Graphics3D 640,480,16,2
SetBuffer BackBuffer()

cam=CreateCamera()
PositionEntity cam,0,30,-50

pl=CreatePlane()
PointEntity cam,pl


For i=1 To 5
	For j=1 To 5
	cub=CreateCube()
	EntityColor cub,255,Rnd(255),128-Rnd(64)
	PositionEntity cub,-20+i*6,2,-20+j*6
	EntityPickMode cub,3
	EntityBox cub,-1,-1,-1,2,2,2 
	Next
Next


oent=0
While 1
	e=CameraPick(cam,MouseX(),MouseY())
	If e<>0
	EntityAlpha e,Sin(MilliSecs())
	oent=e
	Else
	If oent<>0 Then EntityAlpha oent,1
	oent=0
	EndIf
	RenderWorld
	Flip
	If KeyDown(1) Then Exit
Wend
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nex (23.10.2008)
Старый 25.01.2007, 12:06   #6
pipns
Нуждающийся
 
Регистрация: 01.10.2006
Сообщений: 55
Написано одно полезное сообщение
(для 0 участников)
Re: Выделение мышкой

Может можно сделать с помощью pivot-ов. Создаешь 4 точки, на ландшафте, где ты указываешь курсором и чтобы они двигались по определенным координатам направления. А кубики проверялись находяться ли они внутри прямоугольника созданный спомощью этих точек. Я попробую сегодня это реализовать. Самому интересно, есть ли еще более простой пример.
(Offline)
 
Ответить с цитированием
Старый 25.01.2007, 13:46   #7
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Выделение мышкой

Зачем 4 пивота?
Выделение по щелчку- КамераПиком, как описал ХолиДел.
Выделение "резиновой рамкой"- КамераПрожектом, проецируем координаты юнита в 2Д на экран и проверяем, не попали ли они в прямоугольникк (Х1,У1)-(Х2,У2), описаный растянутой рамкой.
Всё.
(Offline)
 
Ответить с цитированием
Старый 25.01.2007, 15:00   #8
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Re: Выделение мышкой

HolyDel спасибо тебе. уже нажал на кнопку Thanks
(Offline)
 
Ответить с цитированием
Старый 29.01.2007, 11:06   #9
pipns
Нуждающийся
 
Регистрация: 01.10.2006
Сообщений: 55
Написано одно полезное сообщение
(для 0 участников)
Re: Выделение мышкой

Я так понял, спомощью уамера_пик, можно сразу же выделить все квадратики, как в Generals, Warcraft и т.д!? Кто нибудь может написать такую функцию!?За ранее блогадарен!
(Offline)
 
Ответить с цитированием
Старый 29.01.2007, 19:47   #10
Черный крыс
 
Сообщений: n/a
Re: Выделение мышкой

Вам все либы подавай....самим писать нада, и думать головой. Може игру за вас написать в виде либы? Подключаешь....пишешь GameStart() - и вот ты уже легендарный ГеймДевелопер! Можно написать это в своем портфолио....=)
 
Ответить с цитированием
Старый 30.01.2007, 01:25   #11
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Выделение мышкой

зачем либу? функция будет сильно меняться в зависимости от самой игры.
(Offline)
 
Ответить с цитированием
Старый 31.01.2007, 10:42   #12
pipns
Нуждающийся
 
Регистрация: 01.10.2006
Сообщений: 55
Написано одно полезное сообщение
(для 0 участников)
Re: Выделение мышкой

Зачем вообще тогда этот форум, если не хотят люди помогать!? И я думаю головой, но то что я не знаю я спрашиваю.
(Offline)
 
Ответить с цитированием
Старый 31.01.2007, 19:09   #13
jimon
 
Сообщений: n/a
Re: Выделение мышкой


ты попросил сделать, а не спросил о своей проблеме
обвинять пользоваталей форума в лени ето глупо
да и еще обвинять когда сам не знаеш чего хочеш...
 
Ответить с цитированием
Старый 01.02.2007, 01:55   #14
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Выделение мышкой

вот пример:
Graphics3D 800,600,16,1
SetBuffer BackBuffer()

Type unit
	Field ent,sel
End Type

cam=CreateCamera()
PositionEntity cam,0,60,0
RotateEntity cam,60,0,0

p=CreatePlane()
EntityColor p,0,128,0

SeedRnd MilliSecs()
For i=1 To 10
	u.unit=New unit
	u\ent=CreateCube()
	PositionEntity u\ent,Rnd(-100,100),3,Rnd(-100,100)
	u\sel=0
Next
Local ox#,oy#,cx#,cy#,tx#,ty#
While Not KeyDown(1)
	If MouseX()<5 Then TranslateEntity cam,-0.5,0,0
	If MouseX()>795 Then TranslateEntity cam,0.5,0,0
	If MouseY()<5 Then TranslateEntity cam,0,0,0.5
	If MouseY()>595 Then TranslateEntity cam,0,0,-0.5
	
	For u.unit=Each unit
		If u\sel=1 Then EntityColor u\ent,255,255,0 Else EntityColor u\ent,0,0,0
	Next
	RenderWorld
	
	If MouseDown(1)
		cx#=MouseX()
		cy#=MouseY()
		
		If ox>cx Then minx=cx:maxx=ox Else minx=ox:maxx=cx
		If oy>cy Then miny=cy:maxy=oy Else miny=oy:maxy=cy
		
		Rect minx,miny,maxx-minx,maxy-miny,0
		For u.unit=Each unit
			CameraProject(cam,EntityX(u\ent),EntityY(u\ent),EntityZ(u\ent))
			If ProjectedX()>minx And ProjectedX()<maxx And ProjectedY()>miny And ProjectedY()<maxy Then u\sel=1 Else u\sel=0
		Next
		Else
		ox#=MouseX()
		oy#=MouseY()
	EndIf
	
	Oval MouseX()-3,MouseY()-3,5,5,0
	Flip
Wend
P/S\ правильно сделал, что исправил либу на функцию, а то ты етой либой всех в заблуждение ввел.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
Nex (23.10.2008), }{@KeR (19.02.2011)
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделить и переместить объект мышкой! ELIAS Blitz3D 8 25.10.2008 18:59
Выделение объектов. Delta_Q 3D-программирование 3 01.10.2007 03:55
Помогите с поворотами мышкой в Blitz3d Round 3D-программирование 12 11.09.2006 21:27


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


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