Окунись в мир фэнтези! Хит 2009 года!   [ Фантастический мир, где ты можешь стать Легендой! Бесплатная онлайн-игра! ]
Управление при помощи мыши (Dark Basic) - Dark Basic - Программинг - Каталог статей - Развлекательный сайт для программистов-игроделов



Категории каталога

Программинг [35]
Программинг, уроки, формулы, туториалы
Dark Basic [30]
Помощь начинающим в Dark Basic (Статьи,учебники,книги)
Blitz 3d [7]
Статьи и уроки по Blitz 3d
C/C++ [7]
Статьи по C/C++
Delphi [12]
книги, уроки, статьи, программирование в Delphi
Game Maker [12]
Статьи, помощь для программистов игроделов на Game Maker
Ассемблер (Assembler) [5]
Стати по Ассемблеру для начинающих и продвинутых программистов
ВЕБ-ПРОГРАММИРОВАНИЕ [5]
Уроки и статьи по ВЕБ-программированию

Форма входа

Приветствую Вас Гость!

E-mail:
Пароль:

Поиск

Друзья сайта



    Случайное фото

    Счётчики



    Rambler's Top100 Seo анализ сайта оптимизация

    Статистика

    Онлайн всего: 3
    Гостей: 3
    Пользователей: 0

Поддержите наш проект

WebMoney:
R309699065243
U292079291240
Z373355457648

Наш опрос

Представьте что Вы разминируете взрывное устройство, у вас 5 секунд, какой провод будете резать?
Всего ответов: 43

Статистика

$COUNTERdiv>
Seven Quadrats of Hell

Каталог статей

Главная » Статьи » Программинг » Dark Basic

Управление при помощи мыши (Dark Basic)
РУКОВОДСТВО ПО СОЗДАНИЮ 3D-ИГР
III. ИГРА

2. Управление при помощи мыши

Цель урока: объяснить, как использовать команды мыши для перемещения камеры.

Во многих играх используется такое свойство настройки, как "mouse look", позволяющая поворачивать камеру перемещением мыши. Это более эффективный метод управления камерой, чем управление с клавиатуры.

Sync On
Sync Rate 30

hide mouse

Backdrop on
Set camera range 1,5000

Fog on
Fog distance 4000
Fog color RGB(128,128,128)
Color Backdrop RGB(128,128,128)

Rem Создаем матрицу
Make matrix 1,10000,10000,20,20

Rem Текстурируем матрицу
Load image "grass09.bmp",1
Prepare matrix texture 1,1,1,1
Fill matrix 1,0,1

rem Присваиваем координатам вершин матрицы случайные значения
randomize matrix 1,125
X#=5000
Z#=5000
Rem Основной цикл
Do
 OldCamAngleY# = CameraAngleY#
 OldCamAngleX# = CameraAngleX#

 CameraAngleY# = WrapValue(CameraAngleY#+MousemoveX()*0.2)
 CameraAngleX# = WrapValue(CameraAngleX#+MousemoveY()*0.2)

 Rem  Управление перемещением камеры
 If Upkey()=1
  XTest# = Newxvalue(X#,CameraAngleY#,10)
  ZTest# = Newzvalue(Z#,CameraAngleY#,10)
  If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000
   X#=XTest#
   Z#=ZTest#
  Endif
 Endif

 If Downkey()=1
  XTest# = Newxvalue(X#,Wrapvalue(CameraAngleY#-180),10)
  ZTest# = Newzvalue(Z#,Wrapvalue(CameraAngleY#-180),10)
  If XTest#>0 and XTest#<10000 and ZTest#>0 and ZTest#<10000
   X#=XTest#
   Z#=ZTest#
  Endif
 Endif
 

 Yrotate camera CurveAngle(CameraAngleY#,OldCamAngleY#,24)
 Xrotate camera CurveAngle(CameraAngleX#,OldCamAngleX#,24)
 

 Y# = Get ground height(1,X#,Z#)
 Position Camera X#,Y#+50,Z#

 Rem Обновляем экран
 Sync
Loop

Вы уже заметили, что мы используем тот же код, что и в предыдущем уроке. В последующих уроках мы продолжим "надстраивать" этот код, чтобы в итоге создать завершенную игру.

 OldCamAngleY# = CameraAngleY#>
 OldCamAngleX# = CameraAngleX#
 CameraAngleY# = WrapValue(CameraAngleY#+MousemoveX()*0.2)
 CameraAngleX# = WrapValue(CameraAngleX#+MousemoveY()*0.2)
 

Здесь в основном цикле мы сохраняем значения углов поворота камеры по осям Y и X в переменных "OldCamAngle" и после этого присваиваем новые значения переменным CameraAngle. Мы используем команду "WrapValue", чтобы значения углов находились в диапазоне от 0 до 360 градусов. Чтобы изменить значение переменных "CameraAngle", мы прибавляем к ним значения, возвращаемые командами "MouseMove", умноженные на поправочный коэффициент 0,2. Команды "MouseMoveX" и MouseMoveY()" возвращают относительное значение пространственных координат, на которое переместилась мышь с момента последнего считывания данных. Если быстро перемещать мышь вверх, вниз, вправо и влево, то возвращаемое значение будет намного больше, чем то, которое бы было при медленном перемещении мыши. Возвращаемое значение также зависит от размера экрана, используемого программой. Перемещение мыши со средней скоростью обычно возвращает значения от 8 до 16. Если эти значения прибавлять непосредственно к значениям углов поворота камеры, то скорость ее поворота будет слишком высокой. Нормализация этой величины путем умножения возвращаемого значения перемещения мыши на поправочный коэффициент 0,2 приводит к более приемлемым результатам.

 Yrotate camera CurveAngle(CameraAngleY#,OldCamAngleY#,24)
 Xrotate camera CurveAngle(CameraAngleX#,OldCamAngleX#,24)
 

 Y# = Get ground height(1,X#,Z#)
 Position Camera X#,Y#+50,Z#

После обработки всех значений, введенных с клавиатуры и мыши, мы поворачиваем камеру при помощи команд поворота камеры, используя команду "CurveAngle" для плавного перехода от старого угла положения камеры к новому. Первый параметр этой команды - новое значение угла, на который мы желаем повернуть камеру. Второй параметр - текущий угол поворота камеры. Третий параметр - скорость, с которой мы желаем перейти от старого к новому положению камеры. Команда "CurveAngle" изменяет это значение по кривой, в результате чего значение, используемое для вращения, находится в промежутке между старым и новым значением.

Заметьте интересный эффект поворота камеры, получаемый путем замены следующих двух строки кода

 OldCamAngleY# = CameraAngleY#
 OldCamAngleX# = CameraAngleX#

на

 OldCamAngleY# = Camera Angle Y()
 OldCamAngleX# = Camera Angle X()

с использованием команд "Camera Angle". 



Ресурсы к урокам на Dark Basic

Категория: Dark Basic | Добавил: quadrathell (29.10.2008)
Просмотров: 719 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email:
Код *:

Реклама




Новости от Radeant.com



Каталоги

Весь интернет в одном каталоге! Украинский портАл

Ещё

Весь интернет в одном каталоге!

Скрипт каталога ссылок

Партнёры Сайта

Все Партнёры

программирование:
LoBoSoFt Team - небольшая компания разрабатывающая разные игры и программки
игры софт mobile музыка:
Новости игр, новости hardware
разное - обо всём:
Сайт Эврика Моё смешное Огненный форум Phoenomix !!! Бесплатный софт - качать бесплатно Уроки фотошоп для начинающих Заработай с нами!

Стать Партнёром