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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 09.07.2015, 15:48   #1
softcrasoft
Знающий
 
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений
(для 7 пользователей)
Как сделать стрельбу

Приветствую.
Я уже делал подобную тему, но из-за того что я все описал не так как надо, не получил понятного ответа.
Итак:
У меня есть собственно сам blitz3d.
Там написана не до игра, где спереди меня и чуть левее враг.
Стрелкой вверх я иду вверх, вниз иду вниз.
Влево поворачиваюсь влево, вправо поворачиваюсь вправо.
И вот сам вопрос:
Как сделать стрельбу?
что бы если я повернут прямо к противнику и жал пробел, воспроизводился взук выстрела. И если объект по центру, что бы выполнялся блок, где идет воспроизведение звука крика, и отнятие hp.
Как такие вещи можно сделать?
Если б я не поворачивался а перемещался, я бы сравнивал по оси y. Но с поворотами...
Сразу предупрежу. тригонометрию не знаю.
И прошу кстати туторы различные не предлагать, а описать хотя бы алгоритм по моей задаче.
Удачи!
(Offline)
 
Ответить с цитированием
Старый 09.07.2015, 15:52   #2
L-ee-X
Разработчик
 
Аватар для L-ee-X
 
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений
(для 220 пользователей)
Ответ: Как сделать стрельбу

Открой справку в конце то концов профессионал, изучи хоть не много....
Такое ощущение что тут за тебя игру пишут а ты только как Ген. Директор идеи выдвигаешь, а справку наверное в глаза не видел. Где же твои профессиональные навыки то.
__________________
(Offline)
 
Ответить с цитированием
Старый 09.07.2015, 16:21   #3
softcrasoft
Знающий
 
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений
(для 7 пользователей)
Ответ: Как сделать стрельбу

в справку я смотрел в первую очередь. нет там инфы про стрельбу и даже тому подобные вещи. типа функции, которая возвращает в центре ли указанный объект.
По поводу игр, я прошу не код а алгоритм. читайте внимательней
(Offline)
 
Ответить с цитированием
Старый 09.07.2015, 16:23   #4
L-ee-X
Разработчик
 
Аватар для L-ee-X
 
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений
(для 220 пользователей)
Ответ: Как сделать стрельбу

Так в справке этого и не будет. В справке все есть для того чтоб это сделать. Сложного там ни чего нет.
__________________
(Offline)
 
Ответить с цитированием
Старый 09.07.2015, 16:26   #5
softcrasoft
Знающий
 
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений
(для 7 пользователей)
Ответ: Как сделать стрельбу

ну вы то может тригонометрию знаете, а я нет. там даже функций для того что бы осуществить нет. ну или по крайней мере я их не нашел.
(Offline)
 
Ответить с цитированием
Старый 09.07.2015, 16:41   #6
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений
(для 1,471 пользователей)
Ответ: Как сделать стрельбу

(Offline)
 
Ответить с цитированием
Старый 09.07.2015, 16:46   #7
L-ee-X
Разработчик
 
Аватар для L-ee-X
 
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений
(для 220 пользователей)
Ответ: Как сделать стрельбу

Сообщение от Nerd Посмотреть сообщение
Да что толку он найдет её? Следующий вопрос будет и что с ней делать? Как мне написать, какой алгоритм и тд
__________________
(Offline)
 
Ответить с цитированием
Старый 09.07.2015, 16:56   #8
softcrasoft
Знающий
 
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений
(для 7 пользователей)
Ответ: Как сделать стрельбу

похоже EntityRoll# это то, но как проверить, направлено ли это объекту. да и вообще ось z это ж вроде вперед. хотя как там ппо тригонометрии я не знаю.
(Offline)
 
Ответить с цитированием
Старый 09.07.2015, 16:59   #9
L-ee-X
Разработчик
 
Аватар для L-ee-X
 
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений
(для 220 пользователей)
Ответ: Как сделать стрельбу

EntityPickMode entity,pick_geometry[,obscurer]
Параметры
entity - указатель объекта 

pick_geometry - тип геометрии, используемой для проверки: 
0: не проверяется (по умолчанию) 
1: Сфера (используется EntityRadius) 
2: Полигоны 
3: Куб (используется EntityBox) 

obscurer (не обязательно) - True, чтобы установить, что объект перекрывает другие объекты во время выполнения EntityVisible. 

Описание
Устанавливает режим проверки для объекта. 

Дополнительный параметр obscurer используется с EntityVisible, чтобы создать условия, когда линия взгляда может как бы беспрепятственно пройти между двумя объектами. Это позволяет проверять некоторые объектам с использованием других pick-команд, но игнорировать их (они как бы 'прозрачные') при использовании EntityVisible. Это очень важное свойство EntityVisible. 

Пожалуйста, учтите, что только типы Сфера и Куб будут работать со спрайтами Blitz3D. Оопределение полигона возможно только в объекте типа mesh( модель). 

Смотрите также: EntityPick, LinePick, CameraPick, EntityPickMode.
__________________
(Offline)
 
Ответить с цитированием
Старый 09.07.2015, 17:06   #10
L-ee-X
Разработчик
 
Аватар для L-ee-X
 
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений
(для 220 пользователей)
Ответ: Как сделать стрельбу

Держи, уже почти готовый CoD
Graphics3D 640,480,32,2
SetBuffer BackBuffer
()

Global 
fntArialr
fntArialr
=LoadFont("Arial",24,False,False,False)


Type Dude
    Field entity
,speed#
End Type

Type Dudet
    Field entity2
End Type

Const TYPE_PLAYER=1,Typelevel=2,enti=3,botar=4,enti2=5
Collisions TYPE_PLAYER
,TYPE_PLAYER,1,1

Healthb
=100
Healthig
=100

SchetB
=0
SchetP
=0
 campiv 
CreatePivot() 
 
cam CreateCamera(campiv)
CameraRange cam0.1,200000
EntityType campiv
,TYPE_PLAYER

lit
=CreateLight()

PositionEntity lit,0,20,0
RotateEntity lit
,10,90,0

gun1
=CreateCube()

ScaleEntity gun1,0.04,0.04,0.1
 PointEntity gun1
,campiv
EntityParent gun1
,campiv
EntityParent gun1
,cam 
PositionEntity gun1
,0,-0.15,+0.3
EntityColor gun1
,99,99,103

gunmu
=CreateCube(gun1)
ScaleEntity gunmu,0.1,0.7,0.7
 PointEntity gunmu
,campiv
EntityParent gunmu
,campiv
EntityParent gunmu
,cam 
PositionEntity gunmu
,0,-0.15,+0.40

bot
=CreateCube()
ScaleEntity bot,0.5,0.8,0.5
PositionEntity bot
,0,0,20
EntityColor bot
,0,160,252
EntityType bot
,botar

gol
=CreateSphere(8,bot)
ScaleEntity gol,0.7,0.5,0.7
PositionEntity gol
,0,1.5,0
EntityColor gol
,231,109,0
EntityType gol
,botar

pln
=CreatePlane()

EntityColor pln,205,88,249

PositionEntity pln
,0,-1,0


 cub1
=CreateCube()
EntityColor cub1,42,255,0
PositionEntity cub1
,-3,0,0
ScaleEntity cub1
,0.3,4,20
EntityType cub1
,Typelevel

 cub2
=CreateCube()
EntityColor cub2,42,255,0
PositionEntity cub2
,3,0,0
ScaleEntity cub2
,0.3,4,20
EntityType cub2
,Typelevel

 cub3
=CreateCube()
EntityColor cub3,255,0,0
PositionEntity cub3
,8,0,20
ScaleEntity cub3
,5,4,0.3
EntityType cub3
,Typelevel

 cub4
=CreateCube()
EntityColor cub4,255,0,0
PositionEntity cub4
,-8,0,20
ScaleEntity cub4
,5,4,0.3
EntityType cub4
,Typelevel

cub2
=CreateCube()
EntityColor cub2,255,0,0
PositionEntity cub2
,20,0,0
ScaleEntity cub2
,0.3,4,40
EntityType cub2
,Typelevel


cub2
=CreateCube()
EntityColor cub2,255,0,0
PositionEntity cub2
,-20,0,0
ScaleEntity cub2
,1,4,40
EntityType cub2
,Typelevel

pot
=CreateCube()
ScaleEntity pot,100,0.01,100

EntityColor pot
,255,255,255
PositionEntity pot
,0,4,0

Collisions TYPE_PLAYER
,typelevel,2,2
 
Collisions botar
,typelevel,2,2


Repeat

For d.Dude=Each Dude
        
        MoveEntity d
\entity,0,0,1

If EntityDistance(gun1,d\entity)>200
FreeEntity d
\entity
    Delete d
    
                    
EndIf


    
Next


If bull<MilliSecs()        

        
bul=bul+1                
            
If bul=25 Then bul=0  
        bull
=MilliSecs()+1
    
EndIf
    
    
    
For 
f.Dudet=Each Dudet
        
        MoveEntity f
\entity2,0,0,1

If EntityDistance(bot,f\entity2)>200
FreeEntity f
\entity2
    Delete f
    
                    
EndIf
            
    
Next


If bull2<MilliSecs()        

        
bul2=bul2+1                
            
If bul2=25 Then bul2=0  
        bull2
=MilliSecs()+1
    
EndIf

If 
EntityCollided (bot,Typelevel)

AlignToVector bot,EntityX(bot)-EntityX(campiv),0,EntityZ(bot)+EntityZ(campiv),0,0.6
EndIf 




TurnEntity bot,0,Sgn(DeltaYaw(bot,campiv))*2.3,0
MoveEntity bot
,0,0,0.05
 
If KeyDown(17)  Then 
TFormVector 0
,0,0.2,cam,campiv 
MoveEntity campiv
,TFormedX(),0,TFormedZ() 
EndIf 

If 
KeyDown(31)  Then
TFormVector 0
,0,-0.2,cam,campiv 
MoveEntity campiv
,TFormedX(),0,TFormedZ() 
EndIf 

If 
KeyDown(30)  Then 
MoveEntity  campiv
,-0.2,0,0
EndIf 

If 
KeyDown(32)  Then 
MoveEntity  campiv
,0.2,0,0
EndIf 

If 
KeyDown(57)
CameraZoom cam,2
Else
CameraZoom cam,1
EndIf 




If 
EntityInView(bot,cam)
For 
g=1 To 1
sphere2
=CreateSphere()
ScaleEntity sphere2,0.1,0.1,0.1
RotateEntity sphere2
,10,0,20
If bul2=0
f
.Dudet=New Dudet
    f
\entity2=CopyEntitysphere2 )
    
EntityColor f\entity2,Rnd(255),Rnd(255),Rnd(255)
        
ResetEntity f\entity2
        
    PositionEntity f
\entity2,EntityX#(bot),EntityY#(bot)-0.3,EntityZ(bot) 
RotateEntity f\entity2,EntityPitch#(bot,1),EntityYaw#(bot),0 
EntityType f\entity2,enti2
Collisions enti2
,Typelevel,2,3
Collisions enti2
,TYPE_PLAYER,1,2
EndIf 
Next

If EntityCollided (campiv,enti2)
Healthig=Healthig-1
EndIf



FreeEntity sphere2

EndIf



TurnEntity campiv,0,-MouseXSpeed(),
If EntityCollided (campiv,tulevel
EndIf 


MoveMouse 320,240
 
If Healthb<1
PositionEntity campiv
,0,0,0
PositionEntity bot
,0,0,20
Healthb
=100
Healthig
=100
SchetB
=SchetB+1
EndIf

If 
Healthig<1
PositionEntity campiv
,0,0,0
PositionEntity bot
,0,0,20
Healthb
=100
Healthig
=100
SchetP
=SchetP+1
EndIf

 
UpdateWorld

 RenderWorld

 SetFont fntArialr
    Text 70
,27,"Health"
     
SetFont fntArialr
    Text 70
,67,"Health-Bot="+Healthb
    Text 70
,97,"Health-Player="+Healthig

    
    
    SetFont fntArialr
    Text 500
,27,"Account"
    
SetFont fntArialr
    Text 500
,67,"Bot="+SchetP

SetFont fntArialr
    Text 500
,97,"Player="+SchetB

 Flip

Until KeyHit
(1)


End 
Тут бот стреляет, посмотри код и сделай чтоб Player еще мог стрелять, как ты говоришь АЛГОРИТМ там присутствует... Написал бы да писать лень
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Gector (09.07.2015)
Старый 09.07.2015, 17:21   #11
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений
(для 995 пользователей)
Ответ: Как сделать стрельбу

Ты что, он же не код просит, а АЛГОРИТМ.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Andvrok за это полезное сообщение:
Gector (09.07.2015), L-ee-X (09.07.2015)
Старый 09.07.2015, 17:29   #12
L-ee-X
Разработчик
 
Аватар для L-ee-X
 
Регистрация: 06.06.2011
Адрес: Ирк. обл.
Сообщений: 541
Написано 133 полезных сообщений
(для 220 пользователей)
Ответ: Как сделать стрельбу

Правильней наверное условие очередное ему надо написать которое при виде бота и нажатие лкм летела пуля и если столкнулась с объектом то отняла 10 HP. Вот и весь АЛГОРИТМ )))
__________________
(Offline)
 
Ответить с цитированием
Старый 09.07.2015, 18:01   #13
softcrasoft
Знающий
 
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений
(для 7 пользователей)
Ответ: Как сделать стрельбу

сам страуструп говорил, что чужой код - мрак в ночи, а свой код - своя жизнь.
Код я почти полностью не понял.
А по простому алгоритму так:
если нажат пробел, то
проиграть звук выстрела
если какой-то объект равен центру экрана уж не знаю как там это по тригонометрии, то
отнять 20 хп
если хп > 0, то
проиграть (3д) звук крика
end if
если хп <= 0, то
проиграть (3д) звук крика(умер)
end if
end if
то, какая функция возвращает объект в центре экрана, вопрос.
(Offline)
 
Ответить с цитированием
Старый 09.07.2015, 18:03   #14
softcrasoft
Знающий
 
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений
(для 7 пользователей)
Ответ: Как сделать стрельбу

Ботов просто может быть несколько, и не будут же хп отниматься у одного, а стреляю с в другого.
(Offline)
 
Ответить с цитированием
Старый 09.07.2015, 18:14   #15
softcrasoft
Знающий
 
Регистрация: 21.03.2015
Сообщений: 262
Написано 6 полезных сообщений
(для 7 пользователей)
Ответ: Как сделать стрельбу

Кстати, вот цитата моего одного знакомого, который занимался блицом:
В 2008 году, я узнал про блиц. тогда бгт специально для аудио игр небыл готов. Была некоторая русская инструкция. тогда я ужасно знал английский. и ради атаки и т.д, мне пришлось лезть на английские форумы, так как на русских нормального ответа не давали. Я с большим трудом разобрался с этим. Много было ошибок, небыло инструкции по решению определенных задач, да и думаю сейчас тож нет.
я б тебе помог, да уже не помню ничего. так как забросил всё в том же 2008 году. так как ответ то я получил, но не полный.
Конец цитаты.
Ребят вот так же сдесь. у вас, в первом сообщении простое условие, а вы сказать функцию которая определяет в центре ли объект, и какой. можно даже без какой, ладно я через фор сделаю проверку сказать не можете.
А представлте вы нуб в этом языке и ничего не знаете? скажете, полезу в справку. ну а если английский не знаешь?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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