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

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

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

Ответ
 
Опции темы
Старый 24.10.2008, 22:28   #1
ELIAS
Знающий
 
Аватар для ELIAS
 
Регистрация: 31.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений
(для 6 пользователей)
Вопрос Выделить и переместить объект мышкой!

Всем привет
Собираюсь делать на блитце редактор карт для своей игры. Его образец в принципе у меня уже есть, сделан на дарке про... Вся задача лишь в том чтобы переписать его на блитц3д)))
Но сразу же столкнулся с проблемой...Не могу сделать алгоритм для выделения и перемещения и вращения объекта мышкой... На дарке с этим проблем не было, так как этот код был в хелпе!
чтобы было понятно о чем идёт речь можно скачать отсюда примерчик Скачать PMforForum.rar с WebFile.RU
900 кб.
Вообще код достаточно непростой, по крайней мере для меня) Именно код перемещения и вращения мышью...Всё остальное то в этом примере я сам писал...
Ну вот, кто нить знает как забабацать это в блитце??? Желательно кодом Вот везде есть этот пример для выделения объекта мышью...Но перемещения и вращения я ещё не встречал... Надеюсь на Вашу помощь

Вот кстати код уж выкину заодно:
Ну написан на дарке...но с комментами...Там самое трудное функция drag_object... Именно её мне и надо но в блитц!
Rem Выбираем объект
Rem Создан: 14/07/2003 18:54:11

rem Запуск приложения
sync on : sync rate 60

rem Создаем пол
make object plain 1,300,300
position object 1,0,-50,200
xrotate object 1,270

rem Создаем объект, который будем тащить
make object cube 999, 50
hide object 999

make object cube 2,100
position object 2, 0,0,200


make object Sphere 3,100
position object 3, 0,0,200


rem Устанавливаем камеру и свет
set point light 0,-100,500,-100
position camera -200,0,-200
point camera 0,0,0

rem Основной цикл
do
If keystate(15)=1
   Wait 400
   If Tab = 0
   Tab =1
   else
   Tab = 0
   endif
endif
rem Вызываем подпрограмму, чтобы тащить объект
gosub _drag_object

rem Подсказка пользователю
center text 320,20,"Щелкните на объекте и удерживайте кнопку мыши, чтобы тащить объект."
center text 320,40,"Вращение по правой кнопке мыши."
center text 320,60,"Жмите TAB для включения режима управления камерой! Управляйте клавишами стрелками!)))"
center text 320,80,"Жмите ещё раз TAB для выхода из режима управления камерой"
center text 320,100,"Используйте колёсико мыши для приближения\удаления"


rem Обновляем экран
sync

rem Конец цикла
loop


_drag_object:

if mouseclick()=0 then pickmode=0 : cursorobj=0
mclick=mouseclick()
if mclick>0
 if pickmode=0
  cursorobj=pick object(mousex(),mousey(),2,10)
  if cursorobj>0
   pickmode=mclick
   pickdistance#=get pick distance()
   pickfromx#=get pick vector x()
   pickfromy#=get pick vector y()
   pickfromz#=get pick vector z()
   if pickmode=1
    objx#=object position x(cursorobj)
    objy#=object position y(cursorobj)
    objz#=object position z(cursorobj)
   else
    objx#=object angle x(cursorobj)
    objy#=object angle y(cursorobj)
    objz#=object angle z(cursorobj)
    pickdiffx#=mousemovey() : pickdiffx#=0
    pickdiffy#=mousemovex() : pickdiffy#=0
   endif
  else
   highlightobj=0
  endif
 endif
 if pickmode>0
  if pickmode=1
   pick screen mousex(),mousey(),pickdistance#
   picktox#=get pick vector x()
   picktoy#=get pick vector y()
   picktoz#=get pick vector z()
   pickdiffx#=picktox#-pickfromx#
   pickdiffy#=picktoy#-pickfromy#
   pickdiffz#=picktoz#-pickfromz#
   grid=0
   if grid=1
    pickdiffx#=int(pickdiffx#/5)*5
    pickdiffy#=int(pickdiffy#/5)*5
    pickdiffz#=int(pickdiffz#/5)*5
   endif
   position object cursorobj,objx#+pickdiffx#,objy#+pickdiffy#,objz#+pickdiffz#
  else
   pickdiffx#=pickdiffx#+mousemovey()
   pickdiffy#=pickdiffy#+mousemovex()
   grid=0
   if grid=1
    tpickdiffx#=int(pickdiffx#/22.5)*22.5
    tpickdiffy#=int(pickdiffy#/22.5)*22.5
   else
    tpickdiffx#=pickdiffx#
    tpickdiffy#=pickdiffy#
   endif
   rotate object cursorobj,wrapvalue(objx#-tpickdiffx#),wrapvalue(objy#-tpickdiffy#),objz#
  endif
 endif
endif

`Движение камеры
If Tab=1
crs#=0.2

am#=mousemovez()
r#=r#+am#
if r#<50 then r#=50
Y#=Y#+ mousemovez()

if upkey()=1
 move camera 1
   Y# = Newxvalue(Y#,Wrapvalue(Camera Angle z()),camspeDirectPoint#)
   X# = Newxvalue(X#,Wrapvalue(Camera Angle Y()),camspeDirectPoint#)
   Z# = Newzvalue(Z#,Wrapvalue(Camera Angle Y()),camspeDirectPoint#)
endif
if downkey()=1
   X# = Newxvalue(X#,Wrapvalue(Camera Angle Y()),-camspeDirectPoint#)
   Z# = Newzvalue(Z#,Wrapvalue(Camera Angle Y()),-camspeDirectPoint#)
endif
if leftkey()=1
   X# = Newxvalue(X#,Wrapvalue(Camera Angle Y()-90),camspeDirectPoint#)
   Z# = Newzvalue(Z#,Wrapvalue(Camera Angle Y()-90),camspeDirectPoint#)
endif
if rightkey()=1
   X# = Newxvalue(X#,Wrapvalue(Camera Angle Y()+90),camspeDirectPoint#)
   Z# = Newzvalue(Z#,Wrapvalue(Camera Angle Y()+90),camspeDirectPoint#)
endif

if keystate(210)=1
   Y# = Y# + coef#
endif

if keystate(211)=1
   Y# = Y# - coef#
endif


position object 999,X#,Y#,Z#

rem Эти строки кода объяснить сложно: они управляют камерой:)

inc a#,crs#*mousemovey()
inc b#,crs#*mousemovex()
e#=object position x(999)+r#*cos(270-b#)*cos(a#)
d#=object position y(999)+r#*sin(a#)
f#=object position z(999)+r#*sin(270-b#)*cos(a#)
position camera e#,d#,f#
point camera object position x(999),object position y(999),object position z(999)

endif



`Приближение и удаление камеры
camspeDirectPoint#=10
crs#=0.2
am#=mousemovez()
r#=r#+am#
if r#<50 then r#=50
Y#=Y#+ mousemovez()
position object 999,X#,Y#,Z#

e#=object position x(999)+r#*cos(270-b#)*cos(a#)
d#=object position y(999)+r#*sin(a#)
f#=object position z(999)+r#*sin(270-b#)*cos(a#)
position camera e#,d#,f#
point camera object position x(999),object position y(999),object position z(999)




return
(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 10:12   #2
Isono
Оператор ЭВМ
 
Аватар для Isono
 
Регистрация: 25.08.2008
Сообщений: 29
Написано 3 полезных сообщений
(для 4 пользователей)
Ответ: Выделить и переместить объект мышкой!

Вопрос такой, знаешь ли ты Blitz 3D или не знаешь или совсем новичек?)
(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 13:09   #3
ELIAS
Знающий
 
Аватар для ELIAS
 
Регистрация: 31.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений
(для 6 пользователей)
Ответ: Выделить и переместить объект мышкой!

Вопрос такой, знаешь ли ты Blitz 3D или не знаешь или совсем новичек?)
Ну вообще полтора месяца уже на блитце сижу... Основы конечно знаю!
Вообще у меня огромный опыт программирования на Dark Basic Pro...Но он мне последнее время разонравился, вот и решил на блитц пересесть.
Я на Дарке уж половину игры сделал! Достаточно сложной шароварки...

Кстати никто не знает что с gamesanatomy случилось??? Или это только у меня форум не грузится??? Такой хороший сайт...
(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 13:41   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Выделить и переместить объект мышкой!

Там самое трудное функция drag_object
MouseX
MouseY
MouseXSpeed
MouseYSpeed
CameraPick
PickedX
PickedY
PickedZ
PickedEntity
Type

тебе в помощь
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 13:43   #5
Isono
Оператор ЭВМ
 
Аватар для Isono
 
Регистрация: 25.08.2008
Сообщений: 29
Написано 3 полезных сообщений
(для 4 пользователей)
Ответ: Выделить и переместить объект мышкой!

Молодца что перешел на Blitz тока тут команды длиннее, но вообщем лучше...
Я тоже начинал с Dark Basic года 3 назад... С него легче переходить.
Команды вообщем схожие, думаю сам сообразишь, а про что игра если не секрет?)
(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 13:49   #6
ELIAS
Знающий
 
Аватар для ELIAS
 
Регистрация: 31.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений
(для 6 пользователей)
Ответ: Выделить и переместить объект мышкой!

Игра жанра 3dаркада-платформер с мультяшной графикой...Ну есль это ни о чем не говорит, то самая наверно популярная игра этого жанра SantaClausinTrouble...
(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 13:54   #7
Isono
Оператор ЭВМ
 
Аватар для Isono
 
Регистрация: 25.08.2008
Сообщений: 29
Написано 3 полезных сообщений
(для 4 пользователей)
Ответ: Выделить и переместить объект мышкой!

Клёва, ну удачи, давай изучай BLitz глубже
(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 14:24   #8
ELIAS
Знающий
 
Аватар для ELIAS
 
Регистрация: 31.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений
(для 6 пользователей)
Ответ: Выделить и переместить объект мышкой!

Спасибо! Стараюсь, только вот щас с физикой ещё разбираюсь с Newton... Не получается сделать летающие платформы...Трудно...Да вот ещё вот эта проблема...Ну надо думать...Всё непросто
(Offline)
 
Ответить с цитированием
Старый 25.10.2008, 18:59   #9
Isono
Оператор ЭВМ
 
Аватар для Isono
 
Регистрация: 25.08.2008
Сообщений: 29
Написано 3 полезных сообщений
(для 4 пользователей)
Смущение Ответ: Выделить и переместить объект мышкой!

Юзай лучше действительно, PhysХ, он на много лучше, а ключики можно и спросить(например где нибудь прямо здесь в личке если ты канешна из России))))
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Курсор и объект Hurrit 3D-программирование 13 13.10.2009 22:33
Объект & функция DRAG C++ 6 02.12.2007 03:18
Выделение мышкой mr.DIMAS 3D-программирование 13 01.02.2007 01:55
Толкаем обЪект Horror 3D-программирование 4 31.01.2007 02:06
Помогите с поворотами мышкой в Blitz3d Round 3D-программирование 12 11.09.2006 21:27


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


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