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=8825)

Petrofan 03.08.2009 12:27

Пулеметчик
 
Идет разработка простой игры ПУЛЕМЕТЧИК.
Столкнулся с такими проблемами :SOS:
1-Загрузил 3д звук поставил слушателя и прикрепил звук к самалету стрельба происходит с пулемета в укрытии на земле, так вот когда жызнь самалета ровна 0, он естествено падает и разбивается но звук продолжает играт (звук двигателя) и когда собешь штук 10 то гул такой что просто жуть.
2-Как сделать показатель жизны самолета типа Rect бегающий по экрану и установлен над самалетом.
3-Как сделать чтобы появлялось 2 или 3 самалета. У мене получается что если ибиваешь одного то падают все :dontknow: .
Все сделано типами, есть дым, огонь, взрывы, прикольная карта, управление мышкой.
Буду очень благодарен за помощь :) .

ABTOMAT 03.08.2009 14:14

Ответ: Пулеметчик
 
1. Ну дак удаляй звук же
2. Проецировать координаты самолёта на экран, в них рисовать показатель жизни
3. Искать косяк в коде

DeadElf 03.08.2009 14:22

Ответ: Пулеметчик
 
согласен с вышенаписанным постом
удачи в разработке.;)

FrankH 03.08.2009 14:28

Ответ: Пулеметчик
 
2. У меня создается пивот Х прикрепленный а камере, а к пивоту Х(на подходящем расстоянии перед камерой) крепится спрайт с рамкой(или жизнАмЫ). В цикле при уменьшении жизней перерисовываешь шкалу(или подставляешь готовую) и делаешь пивоту Х pointentity(target). При приближении противника можно пропорционально приближать спрайт к камере, упрощая восприятие расстояния до цели.
3. Если у тебя самолеты типами, то в каждом типе должна быть ячейка с жизнями, Когда просчитываешь самолет, проверяй жизни и если надо пускай дым, а если мертв то ставь ему флаг что пора падать и удаляться через какое-то время.

Colossus 03.08.2009 14:54

Ответ: Пулеметчик
 
создаем переменную Samol_power#=твоя цыфра например 1000

потом между renderworld и flip пишим Rect там высота например 20 а длинна и будит твой Samol_power# вот если в тя попадут пиши условие что мол здоровье=здоровье минус столько то хелов... и полоска будит становиться меньше)

Petrofan 03.08.2009 16:02

Ответ: Пулеметчик
 
Звук не удаляется я пишу FreeSound но он гад всеравно рычит

Данил 03.08.2009 16:04

Ответ: Пулеметчик
 
Terminator, ты гений просто прямо!
там, если я не ошибаюсь, надо проецировать Х и У прямоугольника туда ,где самолет, так? вроде бы ProjectedX и Y


Цитата:

Graphics3D 640,480
SetBuffer BackBuffer()

camera=CreateCamera()
PositionEntity camera,0,2,-10

light=CreateLight()
RotateEntity light,90,0,0

plane=CreatePlane()


cube=CreateCube()

PositionEntity cube,0,1,0

While Not KeyDown( 1 )

If KeyDown( 205 )=True Then TurnEntity camera,0,-1,0
If KeyDown( 203 )=True Then TurnEntity camera,0,1,0
If KeyDown( 208 )=True Then MoveEntity camera,0,0,-0.05
If KeyDown( 200 )=True Then MoveEntity camera,0,0,0.05

; Use camera project to get 2D coordinates from 3D coordinates of cube
CameraProject(camera,EntityX(cube),EntityY(cube),E ntityZ(cube))

RenderWorld

; If cube is in view then draw text, if not then draw nothing otherwise text will be drawn at 0,0
If EntityInView(cube,camera)=True

; Use ProjectedX() and ProjectedY() to get 2D coordinates from when CameraProject was used.
; Use these coordinates to draw text at a 2D position, on top of a 3D scene.
Text ProjectedX#(),ProjectedY#(),"Cube"

EndIf

Text 0,0,"Use cursor keys to move about"
Text 0,20,"ProjectedX: "+ProjectedX#()
Text 0,40,"ProjectedY: "+ProjectedY#()
Text 0,60,"ProjectedZ: "+ProjectedZ#()
Text 0,80,"EntityInView: "+EntityInView(cube,camera)

Flip

Wend

End
Просто устанавливаем Rectу Х = ProjectedX#(), У = ProjectedУ(), и длину сколько тебе надо и высоту.

Цитата:

-Как сделать чтобы появлялось 2 или 3 самалета. У мене получается что если ибиваешь одного то падают все .
КАкой-то у тебя косяк в типах. Если у тебя каждым самолет - тип, и отдельный объекет, такого не должно быть, посмотри чере зDebugLog сколько жизней к каждого самолета и сколько отнимается после попадания в одного из них.

NitE 03.08.2009 18:05

Ответ: Пулеметчик
 
на заметку:
1. самалет пишется через о
2. FreeSound освобождает звук из памяти, но не выключает его
3. если ты что-то накосячил в коде - тебе не помогут если его не увидят
4.
Цитата:

3-Как сделать чтобы появлялось 2 или 3 самалета. У мене получается что если ибиваешь одного то падают все .
это 2 вопроса или 1 ? видимо в коде написано что когда сбиваешь 1 самолет то падают все К.О.

Petrofan 03.08.2009 19:21

Ответ: Пулеметчик
 
Ну то как остановить 3д звук кто знает

SBJoker 03.08.2009 20:05

Ответ: Пулеметчик
 
остановить канал в котором звучит звук, вроде бы всё в хелпе есть.

SKA_DIMKA 03.08.2009 22:19

Ответ: Пулеметчик
 
Цитата:

Сообщение от SBJoker (Сообщение 112857)
остановить канал в котором звучит звук, вроде бы всё в хелпе есть.

Ну да в хелпе есть все))) Вот только парой людям лень искать:-D

Код:

Type samol
Field model,hp ;(тут тип твоих самолетаф может еше какие хар-ки есть)
End Type

samol_new.samol=New samol
samol_new\model=loadmesh("ЯСТРЕБЬ.B3D")
samol_new\hp=100.0

BOOX_SAMOL_snd=LoadSound("TRAX-TARA-RAX.mp3")

For samol_new.samol= Each samol
If samol_new\hp <= 0.0 and Not ChannelPlaying(BOOX_SAMOL_channel)Then
  BOOX_SAMOL_channel=PlaySound (BOOX_SAMOL_snd)
EndIf

Принцип думаю ясен будет ;)

Petrofan 04.08.2009 11:19

Ответ: Пулеметчик
 
Ребята я знаю как пользоватся звуком, (сам без 5 минут музыкант), мне интересно как остановить 3д звук, звук двигателя, когда самолет далеко его плохо слышно но когда он ближе то звук громче и он стерео (зависит от того куда смотрит камера) думаю вы меня поняли.

newman 04.08.2009 13:59

Ответ: Пулеметчик
 
listener=CreateListener(твой объект к которому привзян микрофон,.1,1,.2 )
sound=Load3DSound("твой звук от самолёта")
LoopSound(sound)
em_sound=EmitSound(sound,какойнить самолёт от которого идёт звук)

Ну и теперь делай какой нибудь условаие по которому будет выключаться звук

dist#=EntityDistance(ты,самолёт)
If dist3>250 PauseChannel(em_sound)
If dist3<250 ResumeChannel(em_sound)

Это у меня было так в старом-старом коде, сейчас с блитцем уже давно не работал. Поищи в хелпе описания всех этих функций.


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

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