|
3D-программирование Вопросы, касающиеся программирования 3D мира |
30.12.2006, 16:04
|
#1
|
Знающий
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений (для 0 пользователей)
|
Двигать объект двухмерным курсором
День добрый.
Ситуация такая. Имеется объект (в данном случае - куб). Прилажен двухмерный курсор. После зажатия левой кнопки мыши с курсором на объекте при движении мышой влево\вправо и вверх\вниз объект наш двигается по осям Х и Z...
Как так сделать? На какие величины двигать?
Заранее спасибо.
|
(Offline)
|
|
30.12.2006, 16:16
|
#2
|
Разработчик
Регистрация: 08.06.2006
Сообщений: 412
Написано 13 полезных сообщений (для 4 пользователей)
|
Re: Двигать объект двухмерным курсором
MoveEntity куб,mxs#*.01,0,-mys#*.01 ,где
mxs# и mys# соответственно MouzeXspeed и MouseYspeed разделенные на чуствительность.
|
(Offline)
|
|
30.12.2006, 17:02
|
#3
|
Знающий
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений (для 0 пользователей)
|
Re: Двигать объект двухмерным курсором
Все. Благодарю.
|
(Offline)
|
|
30.12.2006, 19:46
|
#4
|
Знающий
Регистрация: 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
|
Разработчик
Регистрация: 08.06.2006
Сообщений: 412
Написано 13 полезных сообщений (для 4 пользователей)
|
Re: Двигать объект двухмерным курсором
Тут нужно преобразовать 2д координаты в 2д и наоборот
|
Кто из нас еще извращенец:преобразовывать 2д координаты в 3д =)
|
(Offline)
|
|
31.12.2006, 01:42
|
#6
|
Знающий
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений (для 0 пользователей)
|
Re: Двигать объект двухмерным курсором
Ой мальчики, вы только не ссорьтесь Спасибо обоим. Особенно Платону - как раз то, что я хотел!
|
(Offline)
|
|
31.12.2006, 01:56
|
#7
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
Re: Двигать объект двухмерным курсором
Кто из нас еще извращенец:преобразовывать 2д координаты в 3д =)
|
а как ты без этого сделаешь? даже в твоем примере это происходит(тока не знаю насчёт правильности )
|
(Offline)
|
|
31.12.2006, 02:05
|
#8
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Двигать объект двухмерным курсором
не все, я думаю, понимают смысл буквы "д".
imho: Неразбериха возникла из-за постановки вопроса. В любом случае лутче уж два ответа чем один, если точно не знаеш что от тебя хотят
|
(Offline)
|
|
01.01.2007, 23:00
|
#9
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Двигать объект двухмерным курсором
В первом варрианте, если камера повёрнута куда-либо, то уже не прокатывает.
Мой варриант, только теория как я в своём редакторе делал движение:
Есть plane, который ставится на высоту PickedY, и выберается объект который выбрали. Плайн конечно прозрачный. После того как объект выбран у него убирается Пик, а у плайна остаётся, и нужно просто двигать на разницу от того момента как зажал мышку на объекте, и текущих Пик координат на Плайне. Вот и всё, это лучший варриант, по мне так.
|
(Offline)
|
|
02.01.2007, 13:04
|
#10
|
Знающий
Регистрация: 16.07.2006
Сообщений: 304
Написано 3 полезных сообщений (для 0 пользователей)
|
Re: Двигать объект двухмерным курсором
В первом варрианте, если камера повёрнута куда-либо, то уже не прокатывает.
Верно.
Ксатати, Мока, я мог бы у тебя потом парочку вещей спросить, иначе я делаю нечто вроде твоего редактора (где можно было размещать и двигать объекты)?
|
(Offline)
|
|
05.01.2007, 01:46
|
#11
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Двигать объект двухмерным курсором
(где можно было размещать и двигать объекты)?
|
Не совсем понял вопроса.
|
(Offline)
|
|
05.01.2007, 02:44
|
#12
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Двигать объект двухмерным курсором
это вроде твой редактор RPG мира.
|
(Offline)
|
|
05.01.2007, 02:57
|
#13
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Двигать объект двухмерным курсором
Где сам редактор? Вроде там в аттаче. Первый пост смотрите, темы проекта.
|
(Offline)
|
|
02.11.2007, 17:03
|
#14
|
Оператор ЭВМ
Регистрация: 27.07.2007
Сообщений: 24
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Двигать объект двухмерным курсором
А что нужно заменить или написать, чтобы 3д объект постоянно следовал за 2д курсором? То бишь чтобы мышь как бы была всегда нажата )
|
(Offline)
|
|
02.11.2007, 17:43
|
#15
|
Разработчик
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений (для 289 пользователей)
|
Re: Двигать объект двухмерным курсором
команда mousedown()
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:13.
|