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

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

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

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

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

День добрый.

Ситуация такая. Имеется объект (в данном случае - куб). Прилажен двухмерный курсор. После зажатия левой кнопки мыши с курсором на объекте при движении мышой влево\вправо и вверх\вниз объект наш двигается по осям Х и Z...

Как так сделать? На какие величины двигать?

Заранее спасибо.
(Offline)
 
Ответить с цитированием
Старый 30.12.2006, 16:16   #2
c0mrad
Разработчик
 
Регистрация: 08.06.2006
Сообщений: 412
Написано 13 полезных сообщений
(для 4 пользователей)
Re: Двигать объект двухмерным курсором

MoveEntity куб,mxs#*.01,0,-mys#*.01 ,где
mxs# и mys# соответственно MouzeXspeed и MouseYspeed разделенные на чуствительность.
(Offline)
 
Ответить с цитированием
Старый 30.12.2006, 17:02   #3
Valet
Знающий
 
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений
(для 0 пользователей)
Re: Двигать объект двухмерным курсором

Все. Благодарю.
(Offline)
 
Ответить с цитированием
Старый 30.12.2006, 19:46   #4
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Двигать объект двухмерным курсором

2c0mrad
Извращенец?
2Valet
Тут нужно преобразовать 3д координаты в 2д и наоборот:
Тыкай на куб и двига
Graphics3D(640, 480, 16, 2)
SetBuffer(BackBuffer())

Global SCR_CX = GraphicsWidth() / 2
Global SCR_CY = GraphicsHeight() / 2
Global CAM_ZOOM# = 1.1

Camera = CreateCamera()
CameraZoom(Camera, CAM_ZOOM)

Cube = CreateCube()
EntityPickMode(Cube, 2)
PositionEntity(Cube, 3, 0, 10)

Repeat
	
	If MouseDown(1) Then
		If (Obj = 0) Then
			Obj = CameraPick(Camera, MouseX(), MouseY())
			If Obj Then
				Dx = MouseX() - EntityX2D(Obj)
				Dy = MouseY() - EntityY2D(Obj)
			EndIf
		Else
			PositionEntity2D(Obj, MouseX() - Dx, MouseY() - Dy)
		EndIf
	Else
		Obj = 0
	EndIf
	
	RenderWorld()
	Flip()
Until KeyDown(1)
End

Function PositionEntity2D(Entity, Px, Py)
	PositionEntity(Entity, (Px - SCR_CX) * EntityZ(Entity) / SCR_CX / CAM_ZOOM, (SCR_CY - Py) * EntityZ(Entity) / SCR_CX / CAM_ZOOM, EntityZ(Entity))
End Function

Function EntityX2D(Entity)
	Return EntityX(Entity) * SCR_CX * CAM_ZOOM / EntityZ(Entity) + SCR_CX
End Function

Function EntityY2D(Entity)
	Return SCR_CY - (EntityY(Entity) * SCR_CX * CAM_ZOOM / EntityZ(Entity))
End Function
ЗЫ
И использовать CameraPick() чтобы определить клик на 3д обьекте.
(Offline)
 
Ответить с цитированием
Старый 30.12.2006, 19:50   #5
c0mrad
Разработчик
 
Регистрация: 08.06.2006
Сообщений: 412
Написано 13 полезных сообщений
(для 4 пользователей)
Re: Двигать объект двухмерным курсором

Тут нужно преобразовать 2д координаты в 2д и наоборот
Кто из нас еще извращенец:преобразовывать 2д координаты в 3д =)
(Offline)
 
Ответить с цитированием
Старый 31.12.2006, 01:42   #6
Valet
Знающий
 
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений
(для 0 пользователей)
Re: Двигать объект двухмерным курсором

Ой мальчики, вы только не ссорьтесь Спасибо обоим. Особенно Платону - как раз то, что я хотел!
(Offline)
 
Ответить с цитированием
Старый 31.12.2006, 01:56   #7
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Re: Двигать объект двухмерным курсором

Кто из нас еще извращенец:преобразовывать 2д координаты в 3д =)
а как ты без этого сделаешь? даже в твоем примере это происходит(тока не знаю насчёт правильности )
(Offline)
 
Ответить с цитированием
Старый 31.12.2006, 02:05   #8
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Двигать объект двухмерным курсором

не все, я думаю, понимают смысл буквы "д".
imho: Неразбериха возникла из-за постановки вопроса. В любом случае лутче уж два ответа чем один, если точно не знаеш что от тебя хотят
(Offline)
 
Ответить с цитированием
Старый 01.01.2007, 23:00   #9
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Двигать объект двухмерным курсором

В первом варрианте, если камера повёрнута куда-либо, то уже не прокатывает.
Мой варриант, только теория как я в своём редакторе делал движение:
Есть plane, который ставится на высоту PickedY, и выберается объект который выбрали. Плайн конечно прозрачный. После того как объект выбран у него убирается Пик, а у плайна остаётся, и нужно просто двигать на разницу от того момента как зажал мышку на объекте, и текущих Пик координат на Плайне. Вот и всё, это лучший варриант, по мне так.
(Offline)
 
Ответить с цитированием
Старый 02.01.2007, 13:04   #10
Valet
Знающий
 
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений
(для 0 пользователей)
Re: Двигать объект двухмерным курсором

В первом варрианте, если камера повёрнута куда-либо, то уже не прокатывает.

Верно.

Ксатати, Мока, я мог бы у тебя потом парочку вещей спросить, иначе я делаю нечто вроде твоего редактора (где можно было размещать и двигать объекты)?
(Offline)
 
Ответить с цитированием
Старый 05.01.2007, 01:46   #11
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Двигать объект двухмерным курсором

(где можно было размещать и двигать объекты)?
Не совсем понял вопроса.
(Offline)
 
Ответить с цитированием
Старый 05.01.2007, 02:44   #12
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Двигать объект двухмерным курсором

это вроде твой редактор RPG мира.
(Offline)
 
Ответить с цитированием
Старый 05.01.2007, 02:57   #13
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Двигать объект двухмерным курсором

Где сам редактор? Вроде там в аттаче. Первый пост смотрите, темы проекта.
(Offline)
 
Ответить с цитированием
Старый 02.11.2007, 17:03   #14
Myster
Оператор ЭВМ
 
Регистрация: 27.07.2007
Сообщений: 24
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Двигать объект двухмерным курсором

А что нужно заменить или написать, чтобы 3д объект постоянно следовал за 2д курсором? То бишь чтобы мышь как бы была всегда нажата )
(Offline)
 
Ответить с цитированием
Старый 02.11.2007, 17:43   #15
Alex_Noc
Разработчик
 
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений
(для 289 пользователей)
Re: Двигать объект двухмерным курсором

команда mousedown()
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Курсор и объект Hurrit 3D-программирование 13 13.10.2009 22:33
Для RTS: как определить3D-координаты поверхности под 2D-курсором? Maxim1441 3D-программирование 4 10.07.2008 16:58
Проблема с курсором Bagration Blitz3D 8 15.01.2008 05:17
Объект & функция DRAG C++ 6 02.12.2007 03:18
Толкаем обЪект Horror 3D-программирование 4 31.01.2007 02:06


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


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