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

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

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

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 28.08.2007, 11:49   #16
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: FAQ по B3D

нет не подсвечивается
(Offline)
 
Ответить с цитированием
Старый 28.08.2007, 12:11   #17
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 772 пользователей)
Re: FAQ по B3D

ВОПРОС : подскажите, как бы мне сделать небо в моей игре?
ОТВЕТ: есть разные способы:
1) Можно просто создать плоскость(CreatePlane()) , натянуть на него текстуру и поднять на уровень облаков. Но такой способ предпочтителен лишь когда у вас камера направлена вверх, потому что по бокам неба просто не будет, так как это плоскость.
2) Можно создать сферу(CreateSphere()) , и так же натянуть на нее текстуру. только Сфера ,внутри которой мы будем находится не будет видна, потому что изначально объекты видны лишь с внешней стороны, но это можно исправить либо флипнув меш и тем самым у нас поменяются внешняя с внутренней стороной местами(FlipMesh меш), либо поставив, если нужно чтоб меш был виден с обоих сторон, флаг 16 (EntityFX меш, 16). Теперь надо привязать наше небо к камере, потому что иначе игрок может спокойно пересечь границу неба и увидеть что это всего-лишь объект с текстурой(а нам ведь нужно чтоб было как можно реалистичнее), или в таком случае нужно заранее отмасштабировать объект небо так чтоб игрок не смог этого сделать. А привязать небо к камере нам поможет следующий код:
    dxsky#=EntityX( camera,True )-EntityX( sky )
    dysky#=EntityY(camera,True )-EntityY( sky )
    dzsky#=EntityZ( camera,True )-EntityZ( sky )
    TranslateEntity sky,dxsky,dysky,dzsky
или такой:
Positionentity sky, EntityX(camera), EntityY(camera), EntityZ(camera)
что в принципе равноценно

просто вставьте этот код в главный цикл. Естественно, замените навзания camera и sky на ваши.
3)Этот способ самый распространненый.
Function MakeSkyBox()

    m1=CreateMesh()
    ;передняя сторона
    b1=LoadBrush( "tex\sky_FR.jpg",49 )
    s1=CreateSurface( m1,b1 )
    AddVertex s1,-1,+1,-1,0,0:AddVertex s1,+1,+1,-1,1,0
    AddVertex s1,+1,-1,-1,1,1:AddVertex s1,-1,-1,-1,0,1
    AddTriangle s1,0,1,2:AddTriangle s1,0,2,3
    FreeBrush b1
    ;правая сторона
    b1=LoadBrush( "tex\sky_LF.jpg",49 )
    s1=CreateSurface( m1,b1 )
    AddVertex s1,+1,+1,-1,0,0:AddVertex s1,+1,+1,+1,1,0
    AddVertex s1,+1,-1,+1,1,1:AddVertex s1,+1,-1,-1,0,1
    AddTriangle s1,0,1,2:AddTriangle s1,0,2,3
    FreeBrush b1
    ;задняя сторона
    b1=LoadBrush( "tex\sky_BK.jpg",49 )
    s1=CreateSurface( m1,b1 )
    AddVertex s1,+1,+1,+1,0,0:AddVertex s1,-1,+1,+1,1,0
    AddVertex s1,-1,-1,+1,1,1:AddVertex s1,+1,-1,+1,0,1
    AddTriangle s1,0,1,2:AddTriangle s1,0,2,3
    FreeBrush b1
    ;левая сторона
    b1=LoadBrush( "tex\sky_RT.jpg",49 )
    s1=CreateSurface( m1,b1 )
    AddVertex s1,-1,+1,+1,0,0:AddVertex s1,-1,+1,-1,1,0
    AddVertex s1,-1,-1,-1,1,1:AddVertex s1,-1,-1,+1,0,1
    AddTriangle s1,0,1,2:AddTriangle s1,0,2,3
    FreeBrush b1
    ;верхняя сторона
    b1=LoadBrush( "tex\sky_UP.jpg",49 )
    s1=CreateSurface( m1,b1 )
    AddVertex s1,-1,+1,+1,0,1:AddVertex s1,+1,+1,+1,0,0
    AddVertex s1,+1,+1,-1,1,0:AddVertex s1,-1,+1,-1,1,1
    AddTriangle s1,0,1,2:AddTriangle s1,0,2,3
    FreeBrush b1
;нижняя сторона   
    b1=LoadBrush("tex\sky_DN.jpg",49 )
    s1=CreateSurface( m1,b1 )
    AddVertex s1,-1,-1,-1,1,0:AddVertex s1,+1,-1,-1,1,1
    AddVertex s1,+1,-1,+1,0,1:AddVertex s1,-1,-1,+1,0,0
    AddTriangle s1,0,1,2:AddTriangle s1,0,2,3
    FreeBrush b1


    ScaleMesh m1,500,600,500
    FlipMesh m1
    EntityFX m1,9
    EntityOrder m1,10
    Return m1
    
End Function
Эта функция, которая создает коробку с натянутой на нее 6 текстур(вверх, низ, право, лево, перед, зад).Это и есть наше небо. В строках LoadBrush идет загрузка текстур. Впишите туда свой путь и имя файла с расширением . Теперь просто вставьте эту функцию в ваш код(не в главный цикл) и вызывайте ее вот так к примеру: sky = MakeSkyBox() .
(Offline)
 
Ответить с цитированием
Старый 28.08.2007, 12:12   #18
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,012 пользователей)
Re: FAQ по B3D

нет не подсвечивается
какая версия Блица ??
(Offline)
 
Ответить с цитированием
Старый 28.08.2007, 13:05   #19
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,423
Написано 3,449 полезных сообщений
(для 6,840 пользователей)
Re: FAQ по B3D

H@NON, это же не фак, а мини туторы у тебя Тут речь Совсем о нюбаях, и лучше хлебом не кормить, а дать начальные знания, а дальше пусть сам, чтобы опыт Сам набирал, а не копи-пастеров ростить очередных.
(Offline)
 
Ответить с цитированием
Старый 28.08.2007, 13:12   #20
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,423
Написано 3,449 полезных сообщений
(для 6,840 пользователей)
Re: FAQ по B3D

IGR, ну это не меняет сути. Факт что он сам не додумался до этого т.к. ему дали уже готовый код.
(Offline)
 
Ответить с цитированием
Старый 28.08.2007, 14:03   #21
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,702
Написано 295 полезных сообщений
(для 562 пользователей)
Re: FAQ по B3D

H@NON, Респект! Продолжай Дальше!
(Offline)
 
Ответить с цитированием
Старый 28.08.2007, 14:37   #22
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 772 пользователей)
Re: FAQ по B3D

To Мока:
Ну какой же это копи/паст?ведь я привел функцию создания неба, которой многие пользуются, в том числе и я. Зачем нам очередной велосипед? А остальное я в виде описания сделал, че да как.
(Offline)
 
Ответить с цитированием
Старый 28.08.2007, 14:41   #23
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,012 пользователей)
Re: FAQ по B3D

тема полезная !!
но большинство кто приходит на форум что-то спросить не читают факи, а создают новые темы со своими вопросами !!
(Offline)
 
Ответить с цитированием
Старый 28.08.2007, 14:54   #24
H@NON
Дэвелопер
 
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений
(для 772 пользователей)
Re: FAQ по B3D

Надо просто хорошенько раздел FAQ прорекламировать. Лучше сделать ее заглавной страницей.
(Offline)
 
Ответить с цитированием
Старый 28.08.2007, 18:02   #25
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Re: FAQ по B3D

ВОПРОС : Как открыть уже существующий файл и записать в его конец информацию (сам долго думал)
ОТВЕТ:
Файл можно открыть командой OpenFile. Действительно, при открытии файла позиция записи устанавливается в его начало. Устранить это можно двумя способами. Ламерским: сначала считать из файла всю потом записать с учетом новой инфы (можно, кстати, и так:
While not(eof(Your_File))
Readline$ your_File
Wend

потом записываете вашу инфу)

Или простым (как обычно, все гениальное просто), вот так:

filename$="имя_вашего_файла"
file=openfile(filename$)
seekfile filе,filesize(filename$)
И все.
(Offline)
 
Ответить с цитированием
Старый 30.08.2007, 08:30   #26
avel
Бывалый
 
Аватар для avel
 
Регистрация: 11.10.2006
Сообщений: 737
Написано 131 полезных сообщений
(для 452 пользователей)
Re: FAQ по B3D

2Moka&JohnK предлагаю вам вынести ваши "разборки" за рамки поста, дабы не засорять его. лично я уважаю вас обоих и не понимаю чего вы спорите. что же касается моего мнения, то если у опытных людей возникает желание писать сюда свои дополнения и замечания, то я только рад. по поводу размера сообщений, конечно они должны быть небольшими, однако приведение готовых функций и участков кода вполне допустимо. даже в профессиональных FAQ имеются специальные разделы с расширенными ответами и по собственному опыту, скажу, что они бывают весьма полезны.
2всем было предложение закрыть тему, но она пополняется ценной инфой и новички, как я уже писал выше, могут писать сюда свои вопросы, поэтому закрывать ее, думаю нестоит. поэтому прошу всех не флудить и не забивать пост пустой болтовней.
по поводу того, чтобы тему "было видно" я обращусь к администрации.
по поводу собирания материала в одном месте, можно сделать архивчик со всеми вопросами\ответами и поместить его сюда.
(Offline)
 
Ответить с цитированием
Старый 30.08.2007, 10:13   #27
avel
Бывалый
 
Аватар для avel
 
Регистрация: 11.10.2006
Сообщений: 737
Написано 131 полезных сообщений
(для 452 пользователей)
Re: FAQ по B3D

вот еще немного полезной информации:

вопрос: у меня не работает какая-либо стандартная функция и выдается сообщение: function not found
ответ: на это может быть несколько причин:
1) проверьте правильность написания функции, например все ли буквы английские.
2) возможно ваша версия блица устарела и не поддерживает эту функцию. посмотреть версию своего блица вы можете в меню: ( help -> about Blitz3D ), а в файле versions.txt вы можете посмотреть какая команда с какой версией была добавлена. к примеру команда OpenMovie появилась с версией 1.71

вопрос: как сделать, чтобы скорость движения объекта набиралась\сбавлялась постепенно?
ответ: для этого нужно ввести переменную, например speed# и прописать в главном цикле:
if KeyDown(клавиша_увеличения_скорости) then 
	if speed#>=верхнее_ограничение_скорости then 
		speed#=верхнее_ограничение_скорости
	else
		speed#=speed#+0.03
	endif
endif 
if KeyDown(клавиша_уменьшения_скорости) then 
	if speed#<=нижнее_ограничение_скорости then 
		speed#=нижнее_ограничение_скорости
	else
		speed#=speed#-0.03
	endif
endif
вопрос: как сделать, чтобы скорость постепенно сбрасывалась автоматически?
ответ: смотри вопрос выше + добавь строчку: speed#=speed#*0.99
0.99 - это скорость сбрасывания скорости, чем она ближе к единице, тем медленнее будет этот процесс.

вопрос: при использовании команды Animate объект начинает двигаться ни тогда, когда нажата клавиша, а когда она отпускается. почему?
ответ: когда ты пишешь в главном цикле if KeyDown(...) Animate ... блиц запускает эту команду постоянно, когда ты нажимаешь клавишу, а надо ее запустить один раз. решение: используй KeyHit(), либо введи переменну-флаг. примерно так:
If speed#=0 Then Animate меш,0 
If KeyHit(17)=True Or KeyHit(31)=True Then Animate меш,1
вопрос: как работать с колесиком мыши?
ответ: используй функции MouseZ и MouseZSpeed
(Offline)
 
Ответить с цитированием
Старый 30.08.2007, 10:44   #28
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,423
Написано 3,449 полезных сообщений
(для 6,840 пользователей)
Re: FAQ по B3D

if KeyDown(клавиша_увеличения_скорости) then 
	speed#=speed#+0.03
	if speed#>=верхнее_ограничение_скорости then speed#=верхнее_ограничение_скорости
endif 
if KeyDown(клавиша_уменьшения_скорости) then
	speed#=speed#-0.03
	if speed#<=нижнее_ограничение_скорости then speed#=нижнее_ограничение_скорости
endif
Так меньше букаф и смысловой нагрузки и более коррекстно.
(Offline)
 
Ответить с цитированием
Старый 30.08.2007, 12:57   #29
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Re: FAQ по B3D

классны фак, всем спасибо - для себя очень много нового узнал )) 2MoKa, я-бы с твоей подписью промолчал-бы про копи/паст...
(Offline)
 
Ответить с цитированием
Старый 30.08.2007, 13:13   #30
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,423
Написано 3,449 полезных сообщений
(для 6,840 пользователей)
Re: FAQ по B3D

NitE, хочешь сказать что я практикую этот "стиль" кодинга? Ы! Ни в одной моей толковой наработке нету чужых строк. А это я для рекламы, т.к. многие прежде чем задать глупый вопрос не ходят по таким ссылкам, где почитать код нуна чтобы понять, вот и всё а для меня то что по той ссылке, только поднимает интузиазм
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


Часовой пояс GMT +1, время: 10:06.


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