forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Стрельба в игре (http://forum.boolean.name/showthread.php?t=19750)

softcrasoft 21.03.2015 13:26

Стрельба в игре
 
Приветствую всех!
Я незрячий, выбрал blitz3d для написания 3d звуковых игр.
Таких много, но все написано или на bgt, или на c++.
Подскажите пожалуйста, вот у меня есть кубы
cub=CreateCube()
enemy=CreateCube()
PositionEntity cub,0,0,5
PositionEntity enemy,0,0,15
как тут осуществить стрельбу и проверку попал ли я в объект?
Никаких моделей, просто я при нажатии пробел слышу выстрел, и при попадании переменная enemy1hp минус 10, а при hp ,= 0 звук крика, падение.
Подскажите пожалуйста с проверкой на позицию попадания.

Randomize 21.03.2015 13:54

Ответ: Стрельба в игре
 
Стоит посмотреть этот тутор: Создаём свой FPS (first person shooter)

softcrasoft 21.03.2015 14:03

Ответ: Стрельба в игре
 
Цитата:

Сообщение от Randomize (Сообщение 294394)
Стоит посмотреть этот тутор: Создаём свой FPS (first person shooter)


Смотрел, там тока там модели, самой стрельбы не нашел, плюс в моем блице 1.94 не открывается исходник той игры, что там у него

Randomize 21.03.2015 14:05

Ответ: Стрельба в игре
 
Цитата:

Сообщение от softcrasoft (Сообщение 294400)
Смотрел, там тока там модели, самой стрельбы не нашел, плюс в моем блице 1.94 не открывается исходник той игры, что там у него

Вот же стрельба
http://forum.boolean.name/showpost.php?p=97&postcount=9
Внимательнее

RegIon 21.03.2015 14:12

Ответ: Стрельба в игре
 
:4to: о как.
Тебе нужно как можно понятнее объяснить то, что ты задумал, так как думаю все буду ошарашены первым строкам и не правильно тебя поймут.
Пример настройки параметров для луча:
PHP код:

cub CreateCube()
EntityPosition cub,0,0,1
EntytyPickMode cube
,! - иначе луч не найдет 
Global soundWhenDie LoadSound("die.wav")
Global 
soundWhenDamage LoadSound("damage.wav"

А затем проверять, пересек луч этот бокс или нет :
PHP код:

LinePick(x#,y#,z#,0,0,10) ! по z вроде вперед, x-y-z координаты перса
if(e==cub and KeyHit(57) and patron>0Then
    enemy1hp
=enemy1hp-1
    PlaySound  soundWhenDamage
EndIf
if 
enemy1hp<and enemyPlayDie==False  Then
    PlaySound soundWhenDie
    enemyPlayDie 
True Что бы не воспрозводился звук смерти всегда
EndIf 

Сторожилы, исправьте если что не правильно,3 годя на блитзе не сижу.

Хелп по звуку:
http://forum.boolean.name/showthread.php?t=1&page=2

softcrasoft 21.03.2015 14:13

Ответ: Стрельба в игре
 
Цитата:

Сообщение от Randomize (Сообщение 294402)
Вот же стрельба
http://forum.boolean.name/showpost.php?p=97&postcount=9
Внимательнее


Ок еще раз попробую, перечитаю!
А то может и пропустил чего!
Мануалы вообще такие странные, пишут
PositionEntity cub,0,5,0
типа ставит левее куб, хотя изменена y, вот такиемануалы нынче.

softcrasoft 21.03.2015 14:34

Ответ: Стрельба в игре
 
неа, там нету норм объяснений, мне нужен рпимер с нормальными объяснениями к каждой команде без работы с моделями и т.д.

Arton 21.03.2015 14:39

Ответ: Стрельба в игре
 
Цитата:

Сообщение от softcrasoft (Сообщение 294408)
неа, там нету норм объяснений, мне нужен рпимер с нормальными объяснениями к каждой команде без работы с моделями и т.д.

Тогда иди читай хелп.
И скачай нормальную версию блица, хотя бы 1.99, а лучше самую последнею с оф. сайта.

softcrasoft 21.03.2015 14:51

Ответ: Стрельба в игре
 
так она же английская,ю а у меня с ним очень туго,ю да и в хелпе нету понятия стрельбы,ю на сколько я знаю.
Вот мне нужно сделать игру поле 50 на 50, там враги (немцы) их нужно убивать, стрелками влево вправо целимся по звуку голосов, и стреляем. И потом проверки направки, и куда бдует лететь, и попало ли, а как не знаю.

softcrasoft 21.03.2015 14:56

Ответ: Стрельба в игре
 
да и последние версии платные же

Arton 21.03.2015 15:15

Ответ: Стрельба в игре
 
1) Блиц существует давно и по этому можно было бы поинтересоваться не ту ли русского хелпа — Blitz3D_help.7z

2) Blitz3D теперь open source. По этому достаточно зарегистрироваться на сайте и скачать — Blitz3DSetup1108.exe
Цитата:

Сообщение от softcrasoft (Сообщение 294411)
да и последние версии платные же

Последние? А старые были бесплатны конечно.

3) Пожалуйста редактируй старые сообщения и добавляй текст в них, если есть возможность.

4)
Цитата:

в хелпе нету понятия стрельбы
Цитата:

мне нужен рпимер с нормальными объяснениями к каждой команде без работы с моделями и т.д.
Ты спрашиваешь две совершенно разные вещи. Ознакомься со справкой по командам или сиди разбирай какой-нибудь пример читаю справку.

Blitz3DFullExamples.rar — здесь куча всего, от пользователя LLI.T.A.L.K.E.R. Оригинальные ссылки.

softcrasoft 21.03.2015 15:21

Ответ: Стрельба в игре
 
если тут е по командам справка я с удовольствием посмотрю, а где регистрироваться и зачем?

Arton 21.03.2015 15:46

Ответ: Стрельба в игре
 
Цитата:

Сообщение от softcrasoft (Сообщение 294413)
если тут е по командам справка я с удовольствием посмотрю, а где регистрироваться и зачем?

Регистрироваться надо на официальном сайте если хочешь скачать блиц. Однако в своём посте номер 11 я дал все необходимые ссылки.

softcrasoft 21.03.2015 15:50

Ответ: Стрельба в игре
 
а чем отличается платная от бесплатной блиц, тока возможностью создать exe файлик?

Arton 21.03.2015 16:00

Ответ: Стрельба в игре
 
Цитата:

Сообщение от softcrasoft (Сообщение 294416)
а чем отличается платная от бесплатной блиц, тока возможностью создать exe файлик?

Теперь Ничем, блиц полностью бесплатный, с лета 2014-го. Open source означает что его исходники открыты и доступны любому человеку.

RegIon 21.03.2015 16:35

Ответ: Стрельба в игре
 
Если ты так решил аудио-игру, то тебе нужен 3d звук, делается через CreatListener , Load3DSound , EmitSound
Пример: http://www.blitzbasic.com/codearcs/codearcs.php?code=26

Артем Валерьевич 21.03.2015 17:57

Ответ: Стрельба в игре
 
человек же пишет он незрячий, а вы ему читай тутор....

softcrasoft 21.03.2015 18:02

Ответ: Стрельба в игре
 
Ой Господи! Да знаю я про 3d звук! Я поэтому и выбрал blitz3d знакомые посоветовали, потому что там не нужны эти тупые вычисления! А вот со стрельбой я таки не пойму,ю если не разберусь, я оч расстроюсь, т.к у меня тока на блиц надежда

LLI.T.A.L.K.E.R. 21.03.2015 18:47

Ответ: Стрельба в игре
 
Для начала лучше использовать звуковой движок Blitz BASS 1.7 или поглядеть на Russian Sound System
Так как встроенное в Blitz 3д позиционирование звука ооочень примитивно.

Arton 21.03.2015 19:31

Ответ: Стрельба в игре
 
Цитата:

Сообщение от LLI.T.A.L.K.E.R. (Сообщение 294429)
Для начала лучше использовать звуковой движок Blitz BASS 1.7 или поглядеть на Russian Sound System
Так как встроенное в Blitz 3д позиционирование звука ооочень примитивно.

Нет, Bass слишком старый, полностью корректно врапер работал только на XP.
На мой взгляд, оптимальный вариант BlitzAL (оу... сайт mirage-lab.com сдох)
Почему? Там проще всего разобраться.

BlitzAL.zip
Обновлённая dll, если не ошибаюсь многопоточная.

Цитата:

Russian Sound System
Разве она готова?

P. S.
Цитата:

Сообщение от softcrasoft (Сообщение 294428)
потому что там не нужны эти тупые вычисления!

Тупые вычисления нужны везде.

softcrasoft 21.03.2015 19:55

Ответ: Стрельба в игре
 
Мне, примитивность и нужна!
Чтоб было прощеделать звуковую игру типа call of duty,ю но в открытом пространстве.
Я ща насчет стрельбы переживаю, а больше ничего не волнует

Arton 21.03.2015 20:04

Ответ: Стрельба в игре
 
Цитата:

Сообщение от softcrasoft (Сообщение 294433)
Чтоб было прощеделать звуковую игру типа call of duty,ю но в открытом пространстве.

CoD не примитивен (техническая сторона), на открытом пространстве ещё больше проблем.

softcrasoft 21.03.2015 20:12

Ответ: Стрельба в игре
 
Вообщем нужно такое:
Поле 50 на 50
там враги
все как в COd, но без зданий, укрытий, чтоб кто играет из незрячих было проще
делать куб я умею
работа со звуком тоже
осталось понять как делать карту 50 на 50
и как сделать стрельбу.

LLI.T.A.L.K.E.R. 21.03.2015 20:25

Ответ: Стрельба в игре
 
Готовый проект:
(потребуется 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


softcrasoft 21.03.2015 20:32

Ответ: Стрельба в игре
 
а что такое blitzbase? и как я вижу там труднее со звуком, а мне желательно пример на blitz3d так как ео я изучал

LLI.T.A.L.K.E.R. 21.03.2015 20:42

Ответ: Стрельба в игре
 
Всё остальное доступно в обучающих материалах Blitz3D.
Я быстренько выпилил часть нароботок из текущей своей игры.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot