IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
Уроки DArk Basic, Хочу учиться!
Канзас
сообщение 7.9.2010, 19:25
Сообщение #1


Участник
**

Группа: Пользователи
Сообщений: 15
Регистрация: 29.5.2010
Из: Украина г Снежное
Пользователь №: 65650



Подскажите где найти книги, уроки для самых тупых в DB? я уже 3 месяц головой стараюсь а застрял на уроке одном, там ошибка а какая я не пойму.

вот часть статьи по которой я учусь.

4. Стрельба
Цель урока: показать, как реализовать стрельбу в режиме вида от первого лица.
В этом уроке объясняется, как создать оружие и стрелять из него в режиме вида от первого лица. Как и в предыдущем уроке, мы добавляем новые строки к существующему коду. Мы обсудим только изменения в коде, связанные с реализацией оружия и стрельбы.
rem Создаем пушку
Make object cylinder 1,2
XRotate Object 1,90
Fix object pivot 1
Scale object 1,100,100,500
position object 1,0,-7,15
Lock object on 1
Эта часть кода, помещенная перед основным циклом, создает цилиндрический объект и поворачивает его под прямым углом по отношению к установленному по умолчанию виду из камеры. Чтобы сделать такую ориентацию объекта ориентацией по умолчанию, мы используем команду "Fix Object Pivot". Это означает, что углы поворота повернутого объекта устанавливаются равными 0 без смены ориентации объекта. Эта команда часто используется для загрузки моделей с нефиксированной ориентацией. Если загружается модель персонажа, а он лежит лицом вниз, то с помощью этой команды можно повернуть модель так, что персонаж будет стоять. Точка вращения объекта фиксируется для того, чтобы сделать текущее положение объекта положением по умолчанию. После выравнивания объекта по отношению к камере, мы используем команду "Scale Object" для масштабирования объекта в направлении оси Z. Таким образом, создается объект - вытянутый ствол пушки. Первый параметр этой команды - номер объекта для масштабирования. Следующие три параметра команды - направления X, Y и Z, в которых мы хотим масштабировать объект. Мы устанавливаем значение масштабирования по осям X и Y равным 100, что не приводит к изменению масштаба объекта в этих направлениях, так как эта величина представляет собой процентное отношение (100%). Масштабирование по оси Z мы указываем равным 500. Это означает, что размер объекта по оси Z будет увеличен в пять раз. Затем мы позиционируем объект. По умолчанию камера установлена в позицию с координатами (0,0,0) и углами поворота (0,0,0). Мы размещаем цилиндр на 7 единиц пространственных координат ниже камеры и на 15 единиц впереди камеры. Таким образом, создается сходство со стволом пушки.
Rem Создаем снаряд
Make Object Sphere 2,2
Hide Object 2
Этот код создает небольшой сферический объект, применяемый в игре в качестве снаряда. Чтобы скрыть объект, мы используем команду "Hide Object". Причина, по которой мы это делаем, заключается в том, что снаряд не должен быть виден до тех пор, пока мы не выстрелим из пушки.
if Mouseclick()=1 and BulletLife=0
Position object 2,X#,Y#+43,Z#
Set object to camera orientation 2
BulletLife =25
show object 2
Endif
В этой части кода описывается ввод данных при нажатии кнопки мыши. Затем задаются координаты снаряда при выстреле из пушки. Чтобы определить, была ли нажата кнопка мыши, мы используем команду "MouseClick()". Эта команда возвращает номер нажатой кнопки мыши: 1 - для левой кнопки, 2 - для правой, и 0 - если ни одна из кнопок не была нажата. Сравнение "if" также проверяет, не был ли снаряд уже выпущен, сравнивая значение переменной "BulletLife" с 0. Если обе проверки проходят успешно, то объект "снаряд" помещается на семь единиц ниже камеры. После этого он позиционируется по отношению к камере при помощи команды "Set Object To Camera Orientation". Эта команда имеет только один параметр - номер позиционируемого объекта. Так как снаряд только что создан, мы устанавливаем значение переменной "BulletLife" равным 25. Чтобы программа произвела рендеринг объекта-снаряда, используем команду "Show Object".
If BulletLife > 0
Dec BulletLife
Move object 2,20
if BulletLife = 0 then Hide object 2
Endif
Эта часть кода отвечает за перемещение снаряда. Если значение переменной "BulletLife" больше нуля, то выполняется команда "Dec", уменьшающая это значение на единицу. Одновременно снаряд перемещается в направлении выстрела на 20 единиц. Затем снова проверяем значение переменной "BulletLife". Если оно равно 0, то "жизнь" снаряда закончилась и мы снова "прячем" этот объект.
Теперь вы можете добавить стрельбу в вашу игру.
Перейти в начало страницы
 
+Цитировать сообщение
Vova
сообщение 8.9.2010, 9:33
Сообщение #2


Активный участник
***

Группа: Пользователи
Сообщений: 569
Регистрация: 27.8.2009
Из: Москва
Пользователь №: 65609



А что тебе дарк говорит какая ошибка??? С виду все в принципе понятно..
Это урок из хелпа если я не ошибаюсь, вроде я его целиком проходил и все было нормально...


--------------------
Scio me nihil scire

Function OffSetSprite_to_M(spriteOffSet)
Offset Sprite spriteOffSet,sprite width(spriteOffSet)/2,sprite height(spriteOffSet)/2
EndFunction
Перейти в начало страницы
 
+Цитировать сообщение
Engineer
сообщение 8.9.2010, 15:25
Сообщение #3


Активный участник
***

Группа: Пользователи
Сообщений: 71
Регистрация: 2.9.2010
Пользователь №: 65662



вообще, уважаемый Канзас, вопрос не совсем корректно поставлен, если не сказать совсем некорректно. зачем людей напрягать прочтением всего этого мануала, кому нада, давно его уже читали и забыли, как вступительные экзамены. Если есть проблема в коде - выкладывай свой код, т.е. тот с которым ты возишься, а не хэлповский. неважно, откуда ты его взял: сам написал или скопировал. может ты просто код из туториала неточно в редактор перенёс... ты же не вставлял в редактор все русские пояснения! так что давай конечный вариант и возникшую проблему
Перейти в начало страницы
 
+Цитировать сообщение
Канзас
сообщение 8.9.2010, 17:58
Сообщение #4


Участник
**

Группа: Пользователи
Сообщений: 15
Регистрация: 29.5.2010
Из: Украина г Снежное
Пользователь №: 65650



Абсолютно согласен с выше сказанным я извеняюсь. и так. кратко.
rem Создаем пушку
Make object cylinder 1,2
do
XRotate Object 1,90
Fix object pivot 1
Scale object 1,100,100,500
position object 1,0,-7,15
Lock object on 1
Rem Создаем снаряд
Make Object Sphere 2,2
Hide Object 2
if Mouseclick()=1 and BulletLife=0
Position object 2,X#,Y#+43,Z#
Set object to camera orientation 2
BulletLife =25
show object 2
Endif
If BulletLife > 0
Dec BulletLife
Move object 2,20
if BulletLife = 0 then Hide object 2
Endif
вот код. DB не выдает ничего. просто загорается на пол секунды черный экран и тухнет. все.

меня смущает то что BulletLife вроде как переменная но я не пойму где она описывается.. запутался,
Перейти в начало страницы
 
+Цитировать сообщение
Engineer
сообщение 8.9.2010, 20:42
Сообщение #5


Активный участник
***

Группа: Пользователи
Сообщений: 71
Регистрация: 2.9.2010
Пользователь №: 65662



во-первых ты не закрыл цикл DO оператором LOOP
во-вторых команды по созданию и первоначальной расстановке объектов надо делать вне основного цикла
ниже я несколько модифицировал твой код для наглядности. в начало координат поставил зелёный кубик, для ориентира. замедлил скорость пули в 10 раз. Ограничил ФПС до 60, хотя так делать неправильно, ибо ФПСы 2 самое драгоценное, что есть в шутерах. нужно предусматривать систему синхронизации перемещения объектов (в том числе пуль) с системным таймером. Кроме того, если нажать пробел, то камера временно переместится влево от начала координат и покажет сцену сбоку, т.е. ты сможешь увидеть полёт пули. дальность полёта пули задаётся как раз переменной BulletLife

CODE
rem ограничение фпс
sync rate 60

rem Создаем пушку
Make object cylinder 1,2
XRotate Object 1,45
Fix object pivot 1
Scale object 1,100,100,500
position object 1,0,-5,15
rem вот эта команда блокирует объект на экране
Lock object on 1
Rem Создаем снаряд
Make Object Sphere 2,2
Hide Object 2

rem кубик-маркер зелёного цвета
make object cube 3, 3
position object 3, 0,0,-3
color object 3, RGB(0,255,0)
BulletLife =25

do

if Mouseclick()=1 and BulletLife=0
Position object 2,X#,Y#,Z#

rem эта команда нужна, чтобы пуля всегда вылетала в направлении "от камеры"
rem Set object to camera orientation 2

show object 2
Endif

If BulletLife > 0
Dec BulletLife
rem Здесь я уменьшил скорость пули в 10 раз, чтобы её было видно
Move object 2,5
if BulletLife = 0 then Hide object 2
Endif

rem если нажать и удерживать пробел, то сцена будет показана со стороны
if spacekey() = 1
position camera -150,0,50
point camera 150,0,50
else
position camera 0,0,0
point camera 0,0,15
endif

rem ты забыл этот оператор
loop


будут вопросы - задавай))) только по-существу! smile.gif


Цитата(Канзас @ 8.9.2010, 18:58) *
меня смущает то что BulletLife вроде как переменная но я не пойму где она описывается.. запутался,


в языках семейства BASIC от которых частично заимствован синтаксис ДБ переменные не нуждаются в объявлении, т.е. как только ты в программе задаёшь имя переменной, она сразу же создаётся (и по умолчанию равняется 0). Ты в цикле написал BulletLife = 25, вот этой строкой ты её объявил и задал значение. единственное, что неверно, не надо объявлять её в цикле (т.е. между операторами DO...LOOP) правильней сделать это перед циклом
Перейти в начало страницы
 
+Цитировать сообщение
Канзас
сообщение 10.9.2010, 17:44
Сообщение #6


Участник
**

Группа: Пользователи
Сообщений: 15
Регистрация: 29.5.2010
Из: Украина г Снежное
Пользователь №: 65650



огромное спасибо пошел пробовать и разбирать что к чему. Выручил!

есть у кого нибудь какие нибудь уроки?
Перейти в начало страницы
 
+Цитировать сообщение
fox7812
сообщение 11.9.2010, 23:37
Сообщение #7


Активный участник
***

Группа: Пользователи
Сообщений: 122
Регистрация: 1.9.2009
Пользователь №: 65610



Вообще их много в инете...
Перейти в начало страницы
 
+Цитировать сообщение
Vova
сообщение 14.9.2010, 8:43
Сообщение #8


Активный участник
***

Группа: Пользователи
Сообщений: 569
Регистрация: 27.8.2009
Из: Москва
Пользователь №: 65609



http://www.thegamecreators.com/?m=view_pro..._tutorial_index
Канзас
Вот урок на мой взгляд неплохой.



--------------------
Scio me nihil scire

Function OffSetSprite_to_M(spriteOffSet)
Offset Sprite spriteOffSet,sprite width(spriteOffSet)/2,sprite height(spriteOffSet)/2
EndFunction
Перейти в начало страницы
 
+Цитировать сообщение
kein
сообщение 10.4.2014, 15:47
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 2
Регистрация: 10.4.2014
Пользователь №: 65739



Спасибо.
А где найти еще уроки (хотелось бы видеоуроки)?
Перейти в начало страницы
 
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 23.11.2017, 8:33
 X 
Ссылки на работы форумчан:
1. Cайт по использованию 3D технологий
в образовании

2. 15 Defense. Underwater Battle

3. GlaZ в Steam Greenlight