[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 1 из 1
  • 1
Модератор форума: Spidy, turBO, blitz3d  
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » 2 вопроса (звук и таймер)
2 вопроса
K1rusHДата: Вторник, 09.03.2010, 19:38 | Сообщение # 1
ламер
Группа: Пользователи
Сообщений: 37
Награды: 0
Репутация: 1
Статус: Offline
Не проигрывается звук в следующем коде, хотя если ставить звук на нажатие кнопки, всё работает. Подскажите что не так ? Условие срабатывает, так как происходят hideentity и createExplosion...
If EntityCollided ( b\sprite,TypePlayer1 )
HideEntity player
CreateExplosion(player,10)
channel1=PlaySound(vistrel)

И 2 вопрос.
Есть футнкция, при её вызове создаётся объект. Как сделать чтобы через 5 сек он исчезал ? У меня либо сразу исчезает, либо вообще не исчезает. Много примеров с таймеров перепробывал ...


Blitz3d start error:
Blitz3d hates you!

http://proekti.moy.su/

 
SpidyДата: Вторник, 09.03.2010, 19:50 | Сообщение # 2
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
1. Попробуй так
Code
If EntityCollided ( b\sprite,TypePlayer1 ) then
    HideEntity player
    CreateExplosion(player,10)
    channel1=PlaySound(vistrel)  
end if

дополнительные условия:
vistrel - это загруженный файл функцией LoadSound()

2. Попробуй сяк

Code
а=а+1
if a>100 then hideentity()


Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
deejexДата: Вторник, 09.03.2010, 20:20 | Сообщение # 3
заядлый прогер
Группа: Пользователи
Сообщений: 522
Награды: 2
Репутация: 14
Статус: Offline
к вопросу 2 -
вызов функции
Code

tmp_ot = Millisecs()

обновление
Code

If Millisecs()-tmp_ot > 5*1000 Then HideEntity(нужный_объект)




 
K1rusHДата: Вторник, 09.03.2010, 20:36 | Сообщение # 4
ламер
Группа: Пользователи
Сообщений: 37
Награды: 0
Репутация: 1
Статус: Offline
vistrel=LoadSound("sound\vistrel.wav")
загрузка звука происходит, ведь кнопкой я его воспроизвожу.
If KeyHit(42)
channel1=PlaySound(vistrel)
EndIf
Каналы тоже пробовал менять.

Quote (Spidy)
а=а+1 if a>100 then hideentity()

Не работает, т.к. а=а+1 выполняется 1 раз, функция же выполняется 1 раз, думаю по этому ...


Blitz3d start error:
Blitz3d hates you!

http://proekti.moy.su/

 
SpidyДата: Вторник, 09.03.2010, 23:12 | Сообщение # 5
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
Code
а=а+1 if a>100 then hideentity()

если это положить в цикл, то тогда объект исчезнет через некоторое время

А вообще давай весь код в студию, исправим за спасибо


Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
K1rusHДата: Среда, 10.03.2010, 00:52 | Сообщение # 6
ламер
Группа: Пользователи
Сообщений: 37
Награды: 0
Репутация: 1
Статус: Offline
Function CreateBomb ()
i=i+1
j=j+1
mbomb(j,i)=LoadMD2 ("model\bomb.md2")
bomb1_tex=LoadTexture ("texture\bomb.JPG")
ScaleEntity mbomb(j,i), 0.1, 0.1, 0.1
TurnEntity mbomb(j,i), 0, 0, 60
EntityTexture mbomb(j,i), bomb1_tex
PositionEntity mbomb(j,i), k1#, 0, k2#
EntityType mbomb(j,i), TypeBomb
End Function

Пробовал вашими способами, программа ругается: Entity does not exist.
Как советовал deejex, то сразу при запуске так. А как Spidy то по истечению времени.
Как я понял ошибка говорит о том что нету объекта, но я ставил его отдельно и один фиг.

Функция вызывается нажатием кнопки. Пробовал и без массива их делать, всё та же проблема, но мне кажется без него будет сложнее потом с ними работать. Спасибо что помогаете мне, но я учусь, пусть даже не очень быстро smile


Blitz3d start error:
Blitz3d hates you!

http://proekti.moy.su/

 
deejexДата: Среда, 10.03.2010, 09:18 | Сообщение # 7
заядлый прогер
Группа: Пользователи
Сообщений: 522
Награды: 2
Репутация: 14
Статус: Offline
Через массив не получится. Тут нужно использовать типы.

Смотри:

Code

Global bomb_texture = LoadTexture("texture\bomb.JPG")

Type TBomb
Field entity%,ot%
End Type

Function CreateBomb ()  
Bomb.TBomb = New TBomb
Bomb\entity=LoadMD2 ("model\bomb.md2")  
ScaleEntity Bomb\entity, 0.1, 0.1, 0.1  
TurnEntity Bomb\entity, 0, 0, 60  
EntityTexture Bomb\entity, bomb_texture
PositionEntity Bomb\entity, k1#, 0, k2#  
EntityType Bomb\entity, TypeBomb  
Bomb\ot = Millisecs()
End Function

обновление будет выглядеть примерно так -

Code

For Bomb.TBomb = Each TBomb
If Millisecs()-Bomb\ot > 5000 Then HideEntity Bomb\entity
Next




 
K1rusHДата: Суббота, 13.03.2010, 12:35 | Сообщение # 8
ламер
Группа: Пользователи
Сообщений: 37
Награды: 0
Репутация: 1
Статус: Offline
Огромное спасибо всем в помощи, получилось smile Я так понял что лучше с типами работать, вроде в коде разобрался, даже дополнил что нужно и работает. Ещё раз огромное спасибо smile

Добавлено (13.03.2010, 12:35)
---------------------------------------------
Скрыть, скрыли, но если на том месте взрыв делать, то будут все взрываться, даже которые уже невидимы+ каждые 5 сек.
For Bomb.TBomb = Each TBomb
If MilliSecs()-Bomb\ot > 5000 Then HideEntity Bomb\entity ;createexplosion()
Next

Решил удалять их, не удаляет, опять же не пойму, в справке смотрел, примеры смотрел, вроде так же ...
For Bomb.TBomb = Each TBomb
If MilliSecs()-Bomb\ot > 5000 Then Delete Bomb ;createexplosion()
Next


Blitz3d start error:
Blitz3d hates you!

http://proekti.moy.su/

 
deejexДата: Суббота, 13.03.2010, 15:10 | Сообщение # 9
заядлый прогер
Группа: Пользователи
Сообщений: 522
Награды: 2
Репутация: 14
Статус: Offline
For Bomb.TBomb = Each TBomb
If MilliSecs()-Bomb\ot > 5000 Then FreeEntity Bomb\entity : Delete Bomb
Next




 
K1rusHДата: Суббота, 13.03.2010, 21:12 | Сообщение # 10
ламер
Группа: Пользователи
Сообщений: 37
Награды: 0
Репутация: 1
Статус: Offline
Всё работает. Как они работают тоже понял smile

Blitz3d start error:
Blitz3d hates you!

http://proekti.moy.su/

 
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » 2 вопроса (звук и таймер)
  • Страница 1 из 1
  • 1
Поиск: