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

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

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

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

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

команда mousedown()
Вполне очевидно, что я переспрошу )) Команду-то я вижу, я знаю, что она значит, но все-таки хотелось бы попродробнее ))
Мне по сути mousedown вообще не нужен, мне НЕ надо, чтобы мышь буквально была всегда нажата. Надо просто чтобы объект следовал за мышью
(Offline)
 
Ответить с цитированием
Старый 02.11.2007, 18:55   #17
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Двигать объект двухмерным курсором

Myster, смотри справку по CameraPick.
Я могу перефразировать твой вопрос: "У меня мало опыта, как мне его получить?"
Извени за грубость, но реально, просто начни с меньшего и просто учись, пользуйся своими способностями, и пологайся Только на себя, так ты научишся Очень быстро.
(Offline)
 
Ответить с цитированием
Старый 02.11.2007, 19:28   #18
Myster
Оператор ЭВМ
 
Регистрация: 27.07.2007
Сообщений: 24
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Двигать объект двухмерным курсором

MoKa, не, нормально, не грубо вовсе )) Хотя начальный опыт у меня точно есть, но все ж не идеален )) Все эти дела с командами я уже сделал, много раз коды правил во всевозможных местах Справку всю изрыл, сущность я понимаю этих команд, но я не понимаю банально "почему оно не работает?" %) )) Я уже долго с этим мучаюсь, +после всего неделю поиском пользовался, в результате ни к чему не пришел, поэтому вопрос и задаю. В конце концов, я думал этот форум создан помогать людям Я исключительно в безвыходной ситуации задаю вопросы ))
Мне бы понять как в приведенном Cyan'ом коде сделать так, чтобы куб этот можно было постоянно двигать Хотелось бы прям кусочком кода хотя бы, если возможно. Если кто-то хоть чем-то может намекнуть (кроме единичной команды), буду оч признателен Заранее спс )
(Offline)
 
Ответить с цитированием
Старый 02.11.2007, 19:32   #19
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Двигать объект двухмерным курсором

Myster
Смотри, у нас есть объект(модель), есть цель(пивот).
Коммандами CameraPick можно получить точку нажатия, туда ставишь пивот (цель).
Далее функцией PointEntity направляешь модель на пивот. И поворачиваешь модель так:
RoateEntity Entity,0,EntityYaw(Entity),0
Таким образом будет предотвращено поворачивание по всем осям кроме горизонтальной.
И двигаешь вперёд (+z).
(Offline)
 
Ответить с цитированием
Старый 02.11.2007, 23:49   #20
Myster
Оператор ЭВМ
 
Регистрация: 27.07.2007
Сообщений: 24
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Двигать объект двухмерным курсором

MoKa, спс большой, подсказка очень дельная. Я не сказал, что мне надо, но ты уже понял: именно то, что мне нужно - объект и цель, на которую он смотрит
Но когда я традиционным копи-пастом совместил код Cyan'а со своим, опять плохо поперло Может это из-за того, что у меня вид сверху сделан, а тут сбоку? А может и нет, не знаю
Моя мышь все равно не хочет привязываться, более того, она ваще той же мышой не двигает куб.
Если кто может, проверьте плиз код, если несложно, в чем проблема-то? Почему мыша не привязывается? Я пробовал всякими способами, но это получалось глючное вечно скачущее нечто
ПС: mousehit я оставил для целостности, чтобы все видели где заимствованный код )) да и вообще там многое сохранено )

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

0 просмотров
Ни кто не будет копаться в чужём коде.
Не знаешь почему, т.к. копи-пастишь. Удали всё и напиши с нуля, напрягись. Ты сможешь.
(Offline)
 
Ответить с цитированием
Старый 07.11.2007, 08:35   #22
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Двигать объект двухмерным курсором

Сообщение от MoKa
В первом варрианте, если камера повёрнута куда-либо, то уже не прокатывает.
Это не проблема, можно умножить полученые координаты (вектор) на матрицу трансформации камеры и все. Так же и с другими обьектами, не только с камерой.
;Разрешение
ScreenWidth = 800
ScreenHeight = 600

;Центр экрана
CenterX = ScreenWidth Shr 1
CenterY = ScreenHeight Shr 1

;Инициализация графики
Graphics3D(ScreenWidth, ScreenHeight, 32, 2)
SetBuffer(BackBuffer())

;Камера
Camera = CreateCamera()

;Принудительная установка угла фокуса камеры необходима чтобы проекция
;была корректной т.к. узнать его с помощью средств Блица невозможно
Zoom# = 1.2
CameraZoom(Camera, Zoom)

;Проецируемый объект
Cube = CreateCube()

;Удаление объекта от камеры
Mz = 10
Repeat
	
	;Вращаем и двигаем камеру чтобы убедиться в корректности проекции
	TurnEntity(Camera, 0.5, 1.2, -2.1)
	MoveEntity(Camera, 1.5, 0.05, 0.4)
	
	;Получаем экранные координаты
	Mx = MouseX()
	My = MouseY()
	;Изменяем координату "удаленности" объекта от камеры
	Mz = Mz + MouseZSpeed()
	
	;############################################
	;Проецируем экранные координаты в мировые
	Px# = (Mx - CenterX) * Mz / Zoom / CenterX
	Py# = (My - CenterY) * Mz / -Zoom / CenterX
	;Умножаем координаты (вектор) на матрицу трансформации камеры
	Wx# = GetMatElement(Camera, 0, 0) * Px + GetMatElement(Camera, 1, 0) * Py + GetMatElement(Camera, 2, 0) * Mz + GetMatElement(Camera, 3, 0)
	Wy# = GetMatElement(Camera, 0, 1) * Px + GetMatElement(Camera, 1, 1) * Py + GetMatElement(Camera, 2, 1) * Mz + GetMatElement(Camera, 3, 1)
	Wz# = GetMatElement(Camera, 0, 2) * Px + GetMatElement(Camera, 1, 2) * Py + GetMatElement(Camera, 2, 2) * Mz + GetMatElement(Camera, 3, 2)
	;Позиционируем объект по полученым координатам
	PositionEntity(Cube, Wx, Wy, Wz)
	;Поворачиваем объект по углам поворота камеры чтобы убрать влияние ориентации камеры
	RotateEntity(Cube, EntityPitch(Camera), EntityYaw(Camera), EntityRoll(Camera))
	;############################################
	
	RenderWorld()
	Flip()
Until KeyDown(1)
End
Хотя уже поздно, но может кому пригодится.
(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, время: 16:41.


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