|
3D-программирование Вопросы, касающиеся программирования 3D мира |
21.03.2015, 16:35
|
#16
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Стрельба в игре
Если ты так решил аудио-игру, то тебе нужен 3d звук, делается через CreatListener , Load3DSound , EmitSound
Пример: http://www.blitzbasic.com/codearcs/codearcs.php?code=26
|
(Offline)
|
|
21.03.2015, 17:57
|
#17
|
Бывалый
Регистрация: 25.12.2007
Адрес: г. Краснодар
Сообщений: 894
Написано 421 полезных сообщений (для 1,079 пользователей)
|
Ответ: Стрельба в игре
человек же пишет он незрячий, а вы ему читай тутор....
__________________
|
(Offline)
|
|
21.03.2015, 18:02
|
#18
|
Знающий
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений (для 7 пользователей)
|
Ответ: Стрельба в игре
Ой Господи! Да знаю я про 3d звук! Я поэтому и выбрал blitz3d знакомые посоветовали, потому что там не нужны эти тупые вычисления! А вот со стрельбой я таки не пойму,ю если не разберусь, я оч расстроюсь, т.к у меня тока на блиц надежда
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.03.2015, 18:47
|
#19
|
Мастер
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений (для 504 пользователей)
|
Ответ: Стрельба в игре
Для начала лучше использовать звуковой движок Blitz BASS 1.7 или поглядеть на Russian Sound System
Так как встроенное в Blitz 3д позиционирование звука ооочень примитивно.
|
(Offline)
|
|
21.03.2015, 19:31
|
#20
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,023
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Стрельба в игре
Сообщение от LLI.T.A.L.K.E.R.
Для начала лучше использовать звуковой движок Blitz BASS 1.7 или поглядеть на Russian Sound System
Так как встроенное в Blitz 3д позиционирование звука ооочень примитивно.
|
Нет, Bass слишком старый, полностью корректно врапер работал только на XP.
На мой взгляд, оптимальный вариант BlitzAL (оу... сайт mirage-lab.com сдох)
Почему? Там проще всего разобраться.
BlitzAL.zip
Обновлённая dll, если не ошибаюсь многопоточная.
Разве она готова?
P. S.
Сообщение от softcrasoft
потому что там не нужны эти тупые вычисления!
|
Тупые вычисления нужны везде.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.03.2015, 19:55
|
#21
|
Знающий
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений (для 7 пользователей)
|
Ответ: Стрельба в игре
Мне, примитивность и нужна!
Чтоб было прощеделать звуковую игру типа call of duty,ю но в открытом пространстве.
Я ща насчет стрельбы переживаю, а больше ничего не волнует
|
(Offline)
|
|
21.03.2015, 20:04
|
#22
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,023
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Стрельба в игре
Сообщение от softcrasoft
Чтоб было прощеделать звуковую игру типа call of duty,ю но в открытом пространстве.
|
CoD не примитивен (техническая сторона), на открытом пространстве ещё больше проблем.
|
(Offline)
|
|
21.03.2015, 20:12
|
#23
|
Знающий
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений (для 7 пользователей)
|
Ответ: Стрельба в игре
Вообщем нужно такое:
Поле 50 на 50
там враги
все как в COd, но без зданий, укрытий, чтоб кто играет из незрячих было проще
делать куб я умею
работа со звуком тоже
осталось понять как делать карту 50 на 50
и как сделать стрельбу.
|
(Offline)
|
|
21.03.2015, 20:25
|
#24
|
Мастер
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений (для 504 пользователей)
|
Ответ: Стрельба в игре
Готовый проект:
(потребуется BlitzBASS1.7)
https://www.dropbox.com/s/p0g70w0huj9iqqw/Game.rar?dl=0
Include "Includes\Bass.bb"
Width=800 : Height=600
Width2=Width/2 : Height2=Height/2 ;для середины экрана
Graphics3D Width,Height,32,2
;пояснения
;Type EnemyType ;для массива врагов
; Field ent ;для модели врага
; Field hp% ;для здоровья врага
; Field idle_delay ;как часто враг будет говорить
Type EnemyType
Field ent
Field hp%
Field idle_delay
End Type
BASS_Init(-1,44100,BASS_DEVICE_3D,0,BASS_NULL)
BASS_CheckVersion()
BASS_Set3DFactors(-1,0.5,-1)
BASS_Apply3D()
Camera=CreateCamera()
Dim IdleSnd(3) ;рандомный массив голосов
Dim CrySnd(3) ;рандомный массив плача
IdleNum=1 ;переменная чтобы следить, чтобы враги не повторяли фразы
IdleSnd(1)=BASS_StreamCreateFile(0,"Sounds\idle1.wav",0,0,BASS_SAMPLE_3D)
BASS_ChannelSetAttributes(IdleSnd(1),-1,200,-1)
IdleSnd(2)=BASS_StreamCreateFile(0,"Sounds\idle2.wav",0,0,BASS_SAMPLE_3D)
BASS_ChannelSetAttributes(IdleSnd(2),-1,200,-1)
IdleSnd(3)=BASS_StreamCreateFile(0,"Sounds\idle3.wav",0,0,BASS_SAMPLE_3D)
BASS_ChannelSetAttributes(IdleSnd(3),-1,200,-1)
CrySnd(1)=BASS_StreamCreateFile(0,"Sounds\Cry1.wav",0,0,BASS_SAMPLE_3D)
BASS_ChannelSetAttributes(CrySnd(1),-1,200,-1)
CrySnd(2)=BASS_StreamCreateFile(0,"Sounds\Cry2.wav",0,0,BASS_SAMPLE_3D)
BASS_ChannelSetAttributes(CrySnd(2),-1,200,-1)
CrySnd(3)=BASS_StreamCreateFile(0,"Sounds\Cry3.wav",0,0,BASS_SAMPLE_3D)
BASS_ChannelSetAttributes(CrySnd(3),-1,200,-1)
DieSnd=BASS_StreamCreateFile(0,"Sounds\die.wav",0,0,BASS_SAMPLE_3D)
BASS_ChannelSetAttributes(DieSnd,-1,200,-1)
For i=1 To 5 ;создадим 5 врагов
Enemy.EnemyType=New EnemyType
Enemy\ent=CreateCube()
PositionEntity Enemy\ent,Rnd(-100,100),0,Rnd(-100,100)
EntityPickMode Enemy\ent,2 ;делаем врага выбираемым
NameEntity Enemy\ent,Handle(Enemy) ;называем модель врага ссылкой на ячейку врага
Enemy\hp=100
Enemy\idle_delay=Rand(300,1000) ;через сколько враг будет выговаривать фразу
Next
Const FPS%=60
period=1000/FPS
time=MilliSecs()-period
While Not KeyHit(1)
Repeat ;FPS limit
elapsed=MilliSecs()-time
Until elapsed
ticks=elapsed/period
tween#=Float(elapsed Mod period)/Float(period)
For k=1 To ticks ;FPS limit
time=time+period
Speed=1 ;для ускорения при нажатом Shift
If KeyDown(42) Then Speed=2
If KeyDown(200) Then MoveEntity Camera,0,0,0.1*Speed ;камера вперёд
If KeyDown(208) Then MoveEntity Camera,0,0,-0.1*Speed ;камера назад
If KeyDown(203) Then TurnEntity Camera,0,1*Speed,0 ;камера влево
If KeyDown(205) Then TurnEntity Camera,0,-1*Speed,0 ;камера вправо
If KeyHit(57) Then
CameraPick(Camera,Width2,Height2) ;проверяем выборку по центру экрана
ent=PickedEntity() ;присваиваем к ent что мы выбрали
If ent<>0 Then ;если что-то выбрали
If EntityDistance(ent,Camera)<10 Then ;если враг ближе 10 метров
Enemy.EnemyType=Object.EnemyType(EntityName(ent)) ;берём из имени ссылку на ячейку врага
Enemy\hp=Enemy\hp-25 ;вычитываем 25 здоровья
CryNum%=Rand(1,3) ;выбираем разный номер плача
BASS_ChannelSet3DPositionPos(CrySnd(CryNum),EntityX(Enemy\ent),EntityY(Enemy\ent),EntityZ(Enemy\ent)) ;помещаем звук плача где находится враг
BASS_ChannelPlay(CrySnd(CryNum),True) ;играем звук плач
If Enemy\hp<1 Then ;если у врага нет жизней
BASS_ChannelSet3DPositionPos(DieSnd,EntityX(Enemy\ent),EntityY(Enemy\ent),EntityZ(Enemy\ent)) ;помещаем звук смерти где находится враг
BASS_ChannelPlay(DieSnd,True) ;играем звук смерти
FreeEntity Enemy\ent ;удаляем его модель
Delete Enemy ;удаляем врага
EndIf
EndIf
EndIf
EndIf
For Enemy.EnemyType=Each EnemyType ;цикл для каждого из врагов
Enemy\idle_delay=Enemy\idle_delay-1
If Enemy\idle_delay<1 Then ;если задержка для говора закончилась
Enemy\idle_delay=Rand(300,1000) ;через сколько враг будет выговаривать фразу
IdleNum=IdleNum+1 ;выбираем следующий номер фразы
If IdleNum>3 Then IdleNum=1
BASS_ChannelSet3DPositionPos(IdleSnd(IdleNum),EntityX(Enemy\ent),EntityY(Enemy\ent),EntityZ(Enemy\ent)) ;помещаем звук где находится враг
BASS_ChannelPlay(IdleSnd(IdleNum),True) ;играем звук говора
EndIf
Next
BASS_Update3DListener(Camera) ;обновляем звуковую позицию камеры
BASS_Apply3D() ;применяем
UpdateWorld()
Next ;end FPS limit
RenderWorld()
Flip()
Wend
End
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо LLI.T.A.L.K.E.R. за это полезное сообщение:
|
|
21.03.2015, 20:32
|
#25
|
Знающий
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений (для 7 пользователей)
|
Ответ: Стрельба в игре
а что такое blitzbase? и как я вижу там труднее со звуком, а мне желательно пример на blitz3d так как ео я изучал
|
(Offline)
|
|
21.03.2015, 20:42
|
#26
|
Мастер
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений (для 504 пользователей)
|
Ответ: Стрельба в игре
Всё остальное доступно в обучающих материалах Blitz3D.
Я быстренько выпилил часть нароботок из текущей своей игры.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:05.
|