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

Maestro 27.07.2007 01:02

Анимация (и еще пару вопросов)
 
Привет всем. Я только начал изучать Блиц, так что возникают некоторые проблемы .( Вот уже 2 часа бъюсь над ними... безрезультатно. Надеюсь здесь найдутся добрые люди :)

Вот в чем проблема: при загрузки модели и анимации к ней... она не хочет проигрываться при запуске программы. Надо например прописать If KeyDown(17) Animate Bochka. тогда после надатия клавишь меш анимируется. Как сделать, чтобы он анимировался сразу.

Это была первая проблема .) Теперь вторая: я загружал модель через LoadMesh, и просчитывал коллизию. А так как этот объект анимируется, приходится загружать через LoadAnimMesh, и тогда коллизия перестает просчитываться :(. А так как этот объект появляется в случайном месте, то я не могу на тех же координатах создать еще один объект (для коллизии). Помогите пожалуйста.

И еще вопросик. Здесь есть поиск по темам форума?

Raiter 27.07.2007 01:16

Re: Анимация (и еще пару вопросов)
 
1) Пиши не If KeyDown(17) Animate Bochka , а просто Animate Bochka
2) Никогда не слышал, что анимированные объекты не колизятся 0.о
Скорее ты что-то напутал с колизиями. Покажи код...

Цитата:

А так как этот объект появляется в случайном месте, то я не могу на тех же координатах создать еще один объект (для коллизии)
Почему не можеш?
Существуют такие команды, как: EntityX(entity),EntityY(entity),EntityZ(entity) которые возвращают соответственно координаты X,Y,Z объекта.

Юзаем эти команды...
PositionEntity Object2, EntityX(Object1), EntityY(Object1), EntityZ(Object1)

Maestro 27.07.2007 01:28

Re: Анимация (и еще пару вопросов)
 
Вот именно, что если писать просто Animate bochka, она не анимируется. Я даже в проверку отдельную прогу написал:

Graphics3D 800,600,16,1
SetBuffer BackBuffer()

cam=CreateCamera()
PositionEntity cam,0,10,0
lit=CreateLight()
PositionEntity lit,10,20,-20

bochka=LoadAnimMesh("bochka.b3d")
PositionEntity bochka,0,0,10
LoadAnimSeq bochka,"bochka.b3d"
PointEntity cam,bochka

Repeat
Animate bochka

UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End

бочка не анимируется. а если вместо Animate bochka вставить If KeyDown(17) Animate bochka, то после нажатия W, ана начинает анимироваться.

2) Странно. при LoadMesh все нармально, а при LoadAnimMesh коллизии пропадают... ну я еще попробую отдельно написать (как для анимации), может в коде что-то перепуталось.

Ага. попробую повазвращать координаты.
Благодарю.

moka 27.07.2007 01:32

Re: Анимация (и еще пару вопросов)
 
Цитата:

И еще вопросик. Здесь есть поиск по темам форума?
В самом верху, в меню.
Ещё есть у каждого поста кнопочка "Thanks", обычно форумчане любят если их поблагодорят такой кнопочкой ;)
Animate Bochka
нужно вызывать 1 раз. А именно:
If AnimSeq(Bochka)<>0 Anima Bochka
Сразу запуститься анимация.

Horror 27.07.2007 01:35

Re: Анимация (и еще пару вопросов)
 
Делай так ! когда ты создавал модель в максе
у нее было имя к примеру Box01
в блитце допиши этот код

bochka_mdl=LoadAnimMesh("bochka.b3d")
bochka=FindChild(bochka_mdl,"Box01")
PositionEntity bochka,0,0,10


команда ФиндЧаил ищет объект в твоей сцене
просто при экспорте из пепилаина появляется такая иерархие...

impersonalis 27.07.2007 01:39

Re: Анимация (и еще пару вопросов)
 
Конечно, ничего не коллизится - при аниммеш, как результат получаешь хендл "пивота", а не модель. Используй последний параметр
EntityType entity,collision_type[,recursive]
подними его.

Maestro 27.07.2007 10:05

Re: Анимация (и еще пару вопросов)
 
impersonalis, спасибо. заработало.)

MoKa, я уже пытался подобное написать. Анимации всеравно почемуто нет. и... ты наверно имел ввиду If AnimSeq(Bochka)=0 Anima Bochka :)

Horror, не совсем понял, чем лучше такие манипуляции.. но после них вообще ничего не работает :(. Пишет Entity has no animation/ или еще находит отговорки..

Maestro 27.07.2007 13:48

Re: Анимация (и еще пару вопросов)
 
Ура товариши! Все работает :) Я не в ту функцию писал .))

Maestro 28.07.2007 14:07

Re: Анимация (и еще пару вопросов)
 
А чем можно загрузить гиф анимацию? Через LoadSprite неполучается... Еще в хелпе нашел LoadAnimImage... но что-то та же история.
И как можно узнать какие форматы поддерживают некоторые команды, типа LoadSprite и LoadMesh?

Maestro 28.07.2007 21:52

Re: Анимация (и еще пару вопросов)
 
Ну помогите ктонибудь загрузить гиф анимацию...:''((

еще вопросик: можно ли сделать чтобу в общем цыкле (который идет бесконечно) некоторые команды прокрутились только один раз? например добаитьв цыкл вывод надписи... чтобы она один раз выводилась....

Raiter 28.07.2007 23:59

Re: Анимация (и еще пару вопросов)
 
Вложений: 2
Может я и ошибаюсь, но блиц гиф анимацию не воспроизводит...

LoadAnimImage юзается для анимационной ленты...

LoadAnimImage Изображение,ширина "кадра", высота "кадра", номер первого кадра ( 0 ), общее количество кадров

Отсчет кадров идет с 0. Тоесть 1 кадр = 0, 2 кадр = 1 и т.д

Для вывода изображения на экран юзаем DrawImage изображение, позиция X, позиция Y, кадр

Вот пример. Анимационная лента из 3 кадров (лежит в аттаче). При нажатии пробела, меняем кадр на следующий, при достижении предела кадров меняем на первый.

Код:

Graphics 800,600,32,1
SetBuffer BackBuffer()

Image = LoadAnimImage("animimg.png",64,64,0,3)
Frame = 0

While Not KeyDown(1)

If KeyDown(57) Then
        Delay(100)
        Frame = Frame + 1
        If Frame > 2 Then Frame = 0
End If

DrawImage Image,100,100,Frame

Flip
Cls
Wend

Цитата:

еще вопросик: можно ли сделать чтобу в общем цыкле (который идет бесконечно) некоторые команды прокрутились только один раз?
Очень просто. Вводиш переменную, которая будет отвечать за то, выполнилась уже эта команда или нет. В цыкле проверяем переменную. Если = 0, значит выполняем команду и меняем значение переменной на 1 (команда выполнена)... Вот и всё ;)

Код:

Graphics 800,600,32,1
SetBuffer BackBuffer()

Image = LoadAnimImage("animimg.png",64,64,0,3)
Frame = 0

ChangeFrame = 0

While Not KeyDown(1)

If ChangeFrame = 0 Then 
    Frame = Frame + 1
    ChangeFrame = 1
End If

DrawImage Image,100,100,Frame

Flip
Cls
Wend


Maestro 29.07.2007 01:04

Re: Анимация (и еще пару вопросов)
 
Ааа. так вод для чего LoadAnimMesh... мог бы и сам догадаться .))

А вот со вторым вопросом неувязачка вышла. Такой трюк проходитесли есть какая-то переменная, которую надо один раз поенять. Но как это применить если надо вывести текст или спрайт?

ЗЫ: все. доперло. Огромное спасибо.)

H@NON 29.07.2007 16:38

Re: Анимация (и еще пару вопросов)
 
Цитата:

Сообщение от Maestro
А чем можно загрузить гиф анимацию? Через LoadSprite неполучается... Еще в хелпе нашел LoadAnimImage... но что-то та же история.
И как можно узнать какие форматы поддерживают некоторые команды, типа LoadSprite и LoadMesh?

Вообще то гиф анимация в блитце воспроизводится через видео, ну думается что тебе такой вариант не годится.

sample=OpenMovie("sample.gif")

repeat
drawmovie sample,x,y,w,h
renderworld()
flip
until keyhit(1)
closemovie sample
end

Maestro 01.08.2007 00:24

Re: Анимация (и еще пару вопросов)
 
Что-то прогал я прогал... все поперепрогал... теперь помошь нужна. Поможете? :support:

1. здесь был огромный вопрос, на который я нашел ответ в процессе его написания
2. неповерите, но я даже не начал вопрос писать, и уже сам допер. Хотя парился пол дня. Прям исцеление.
3. Блин. От радости третий вопрос забыл :(


Maestro 01.08.2007 01:36

Re: Анимация (и еще пару вопросов)
 
Вспомнил! Как можно узнать координаты объекта? Всмысле координаты того места, где он находится.

Raiter 01.08.2007 01:40

Re: Анимация (и еще пару вопросов)
 
EntityX(entity,[global])
EntityY(entity,[global])
EntityZ(entity,[global])

Я тебе эти команды давал ещё во 2 потсте ;)

Maestro 01.08.2007 01:50

Re: Анимация (и еще пару вопросов)
 
Raiter, аа. вот где я их видел. А я уже все учебники перелистал... Спасибо.

johnk 01.08.2007 07:43

Re: Анимация (и еще пару вопросов)
 
Цитата:

Спасибо
Нажимай батон. :)

Maestro 02.08.2007 23:10

Re: Анимация (и еще пару вопросов)
 
Блин. Я в тупике малость. Вопервых почитал статью про ограничение ФПС в BlitzEtc... сделал... и после этого появилось куча глюков связаных с логикой. Например после нажатия паузы на экране все останавливается, а на самом деле все дальше просчитывается... т.е. при отжати паузы события резко меняются .)) (до этого пауза работала нармально).
Блиц же как-то ограничивает ФПС (flip) до 75... и нет никаких багов... неужели нет такого способа?

И второе. Мне надо, чтобы при столкновении корабля с препядствием происходил взрыв.. и он появлялся в начале уровня...
Но тут происходят 2 проблемы.
1. Надо чтобы при столкновении корабль изчезал, проигрывалась анимация взрыва, потом корабль появлялся в начале... вот я не могу сделать, чтобы корабль изчезал... да, и еще надо чтобы во время взрыва остальной мир продолжал просчитываться, т.е. надо как-то эти умирания, возраждения оторвать от основного цикла... но как?
2. не могу сделать, чтобы анимация взрыва появлялась на месте корабля... У меня корабль постоянно посередине экрана, поэтому я пытался сделать так:
DrawImage boom,EntityX(player,True)+wi*0,5,EntityZ(player,Tr ue)+hi*0,5,m (wi - ширина экрана, hi - длина)
но взрыв ходит все рядом, все около. То правее, то левее, то ниже....

Maestro 03.08.2007 01:36

Re: Анимация (и еще пару вопросов)
 
На счет второго пункта... можно реализовать взрыв LoadAnimTexture наложеным на плоскость... но всеравно это надо как-то вытащить из цыкла .(

IGR 03.08.2007 11:40

Re: Анимация (и еще пару вопросов)
 
Цитата:

Блиц же как-то ограничивает ФПС (flip) до 75...
ето не Блиц, ето частота монитора !!
ставь флип 0 или флип фальше !!

Цитата:

т.е. надо как-то эти умирания, возраждения оторвать от основного цикла... но как?
- возможно функции ??
function DeadShip(...,...,...)
...
End Function

Raiter 03.08.2007 11:48

Re: Анимация (и еще пару вопросов)
 
Цитата:

Блин. Я в тупике малость. Вопервых почитал статью про ограничение ФПС в BlitzEtc... сделал... и после этого появилось куча глюков связаных с логикой. Например после нажатия паузы на экране все останавливается, а на самом деле все дальше просчитывается... т.е. при отжати паузы события резко меняются .)) (до этого пауза работала нармально).
Блиц же как-то ограничивает ФПС (flip) до 75... и нет никаких багов... неужели нет такого способа?
Ну наверное нужно делать так:
Код:

...
Global Pause = -1
...
Repeat
If KeyDown(Key_Pause) Then Pause = -Pause

If Pause <> 1 Then
  ....
End If
Until KeyDown(1)

Цитата:

И второе. Мне надо, чтобы при столкновении корабля с препядствием происходил взрыв.. и он появлялся в начале уровня...
Но тут происходят 2 проблемы.
1. Надо чтобы при столкновении корабль изчезал, проигрывалась анимация взрыва, потом корабль появлялся в начале... вот я не могу сделать, чтобы корабль изчезал...
Код:

HideEntity Ship
PositionEntity StartPosX,StartPosY,StartPosZ
ShowEntity Ship

Цитата:

На счет второго пункта... можно реализовать взрыв LoadAnimTexture наложеным на плоскость... но всеравно это надо как-то вытащить из цыкла .(
Зачем аним текстурами? Делай спрайтами ;)

Цитата:

DrawImage boom,EntityX(player,True)+wi*0,5,EntityZ(player,Tr ue)+hi*0,5,m (wi - ширина экрана, hi - длина)
но взрыв ходит все рядом, все около. То правее, то левее, то ниже....
Ну дык... Ты береш 3д координаты и рисуеш 2д... Со спрайтами всё будет отлично :)

Ну а если уж даже 2д рисовать, и корабль у тебя всегда в центре экрана, то зачем тебе брать его координаты?

DrawImage boom,GraphicsWidth()*0.5, GraphicsHeight*0.5,m

Maestro 03.08.2007 12:41

Re: Анимация (и еще пару вопросов)
 
Цитата:

Ну а если уж даже 2д рисовать, и корабль у тебя всегда в центре экрана, то зачем тебе брать его координаты?
мм... точно.)

Цитата:

Зачем аним текстурами? Делай спрайтами
:4to: а как анимированый спрайт загрузить?

Цитата:

Ну наверное нужно делать так:...
Да нет. пауза то работает... если не делать ограничение ФПС... Ну да ладно, я ограничение убрал.. так что буду потом думать что с ним делать.

Цитата:

HideEntity Ship
PositionEntity StartPosX,StartPosY,StartPosZ
ShowEntity Ship
Я примерно именно так и делал...
вернее вот так: (код находится в главной функции цыкла.. короче постоянно прокручивается, в этом и проблема.)

Код:

If EntityCollided (player,typewalls) Or EntityCollided (player,typeMolnia)
  HideEntity player
  live=live-1
    boom=LoadAnimImage("boom.jpg",64,64,0,8)
    f=1
    While Not f=8
    DrawImage boom,wi/2-20,hi/2-20,f
        Flip
    f=f+1
    Wend
  PositionEntity player,0,0,0
  ShowEntity player
  speed#=.1
 EndIf

и проблема состоит в том, что это все в главном цыкле состоит. и после HideEntity Player он его не прячет, а начинает играть анимацию. И еще, пока проигрывается анимация взрыва весь мир стоит... поэтому и надо как-то вытащить все эти манипуляции из цыкла.

IGR, фунции дают такой же эффект.

Raiter 03.08.2007 12:50

Re: Анимация (и еще пару вопросов)
 
Так у тебя этот код будет работать только в момент колизии...

Попробуй так:
Код:

If EntityCollided (player,typewalls) Or EntityCollided (player,typeMolnia) Then ShipDeath = 1

If ShipDeath = 1 Then
 HideEntity player
  live=live-1
    boom=LoadAnimImage("boom.jpg",64,64,0,8)
    f=1
    While Not f=8
    DrawImage boom,wi/2-20,hi/2-20,f
        Flip
    f=f+1
    Wend
  ShipDeath = 0
  PositionEntity player,0,0,0
  ShowEntity player
  speed#=.1
 EndIf
End If


Maestro 03.08.2007 13:41

Re: Анимация (и еще пару вопросов)
 
Raiter, ничего не изменилось .(

Как анимированый спрайт загрузить? Какой командой? или надо кучу спрайтов загружать по верх предыдущего?
И еще, можно как-то получить координаты столкновения при коллизии?

IGR 03.08.2007 13:53

Re: Анимация (и еще пару вопросов)
 
анимирований спрайт нельзя !!
loadAnimImage-ом с альфой текстуриш какой-то обьект, который будет появлятся во время взрыва !!

Цитата:

или надо кучу спрайтов загружать по верх предыдущего?
ну ето уже какой-то ParticleSystem получется !!

Raiter 03.08.2007 14:08

Re: Анимация (и еще пару вопросов)
 
Цитата:

loadAnimImage-ом с альфой текстуриш какой-то обьект, который будет появлятся во время взрыва !!
анимимэйджем нельзя затекстурить!

это вообще относится к 2д! текстурить можно текстурами...
LoadTexture
LoadAnimTexture

Раз уж делать таким способом, то:
Код:

...
; создаем куб (вообще правильнее было бы квадом, но так проще :) )
; делаем его нужного рзмера и прячем
Cube = CreateCube()
HideEntity Cube

; загружаем нашу анимированную текстуру
TexBoom = LoadAnimTexture("boom.jpg",2,64,64,0,8)
...
If EntityCollided (player,typewalls) Or EntityCollided (player,typeMolnia)

      HideEntity player

      live=live-1

      PositionEntity Cube,EnityX(player),EnityY(player),EnityZ(player),
      ShowEntity Cube

      f=1
   
      While Not f=8
            EntityTexture Cube,TexBoom,f
            f=f+1
      Wend
 
      PositionEntity player,0,0,0
      ShowEntity player
      HideEntity Cube
 
      speed#=.1

 EndIf

Ну а вообще имхо колизии тебе нафик не нужны... Почему бы не заюзать EntityDistance ? ;)

Цитата:

ну ето уже какой-то ParticleSystem получется !!
я об этом и говорил...

Maestro 03.08.2007 14:58

Re: Анимация (и еще пару вопросов)
 
Raiter, аа, ну с LoadAnimTexture все понятно.. я так електричество делал... просто ты сказал
Цитата:

Зачем аним текстурами? Делай спрайтами ;)
Я и подумал, что можно анимированые спрайты грузить...

Щас поюзаю EntityDistance... может баг один уйдет.. ;)

IGR 03.08.2007 15:10

Re: Анимация (и еще пару вопросов)
 
Цитата:

анимимэйджем нельзя затекстурить!

это вообще относится к 2д! текстурить можно текстурами...
LoadTexture
LoadAnimTexture
ну я и имел ввиду LoadAnimTexture !! перепутал !! :@

Maestro 03.08.2007 16:02

Re: Анимация (и еще пару вопросов)
 
Я так понимаю EntityDistance будет побыстрее проверки на коллизию?
А если предмет прямоугольно-вытюнотой формы, EntityDistance никак не приминить?

Raiter 03.08.2007 16:05

Re: Анимация (и еще пару вопросов)
 
EntityDistance сработает не завсимо от формы ентити :)

moka 03.08.2007 16:25

Re: Анимация (и еще пару вопросов)
 
Цитата:

А если предмет прямоугольно-вытюнотой формы, EntityDistance никак не приминить?
Там тогда если оюъект не крутиться, не сложно определить входит ли он в другой паралелепипед. А если крутиться, то до этого нужно сместить все координаты на тот поворот, чтобы объект хотябы один был бы повёрнуть паралельно трём основным осям мира, но второй объект будет соответственно не всегда ему паралелен, поэтому будут неточности, поэтому нада формулу писать.

Maestro 03.08.2007 18:06

Re: Анимация (и еще пару вопросов)
 
Как можно крутить картинку загруженую LoadImage? и как можно ей задать родителя (привезать)? Или если нельзя привизать, то как здвинуть ей пивот? (если он у нее вобщем-то есть.))

Raiter 03.08.2007 18:14

Re: Анимация (и еще пару вопросов)
 
Цитата:

и как можно ей задать родителя (привезать)? Или если нельзя привизать, то как здвинуть ей пивот? (если он у нее вобщем-то есть.))
я про такие извращения даже не слышал :lol: в блице таких команд нет... так что если не хочеш писать для этого дела свою функцию, то юзай спрайт...

Maestro 03.08.2007 18:38

Re: Анимация (и еще пару вопросов)
 
Raiter, блин. так и думал. А как можно спрайт или ентити поверх ГУИ нарисовать ума не приложу... ладно, раз нет таких команд будем дальше мозгами шевелить.

IGR 03.08.2007 18:49

Re: Анимация (и еще пару вопросов)
 
что-бы что-то рисовалось поверх чего-то используй ЕнтитиОрдер !!
(но насчёт Гуи не знаю )

Leito 03.08.2007 19:08

Re: Анимация (и еще пару вопросов)
 
Maestro
entitydistance - это расстояние между центрами объектов.
легко замняется простой геометрической формулой расстояния между двумя точками в 3-х мерном пространстве
dist=sqrt(x1*x2+y1*y2+z1*z2)

Maestro 03.08.2007 19:55

IGR, команда хорошая... только был бы аналок ее применимый к картинкам...
Leito, ну и зачем мне между двумя точками, если у меня длинный прямоугольник? а вычислять перпендикуляр к отрезку прямоугольника геморойно (может конечно потом какнить сделаю). Я просто для них коллизию сделал...

Вообще чтонибудь можно вывести поверх картинки (DrawImage) кроме другой картинки?

Raiter, и крутить нельзя?

Raiter 03.08.2007 20:47

Re: Анимация (и еще пару вопросов)
 
Maestro RotateImage

Leito 04.08.2007 14:46

Raiter, хжутка тормозная функция

Maestro, ты спрашивал что значит эта функция, я ответил!

Maestro 04.08.2007 18:12

Re: Анимация (и еще пару вопросов)
 
Да. функция жуууутко тормозная .) но я уже все переделал... и все работает... ну, почти все. Осталось только разобраться со взрывом. Что же с ним делать? Если прописывать так как раньше (гдето выше есть), то и корабль не изчезает, и мир останавливается... так не пойдет. Если за один цыкл давать команду спрятать и показать, то он прочитает это все и при прорисовке и не подумает прятать корабль...
Короче уже незнаю что делать .(

Raiter 04.08.2007 18:47

Re: Анимация (и еще пару вопросов)
 
Свяжись со мной по аське. Я тебе сделаю..

Maestro 05.08.2007 13:33

Re: Анимация (и еще пару вопросов)
 
Ктонибудь может объяснить что выщитывает MilliSecs()? какие значения принимает... можно л еу задовать значения... и т.д. вобщем поподробнее, а то в хелпе немного непонятно написаро...:@

Belamore 05.08.2007 16:38

Re: Анимация (и еще пару вопросов)
 
Maestro, эта команда покажет тебе системное время в милисекундах. Менять его нельзя. Это может понадобиться если тебе надо вычислить время, за которое было совершено какое-то действие (например, рендер мира - если это время слишком большое то значит геометрия чудит):

rendertime = Millisecs()
RenderWorld()
rendertime = Milliseca - rendertime


Примерно должно быть равно 5-10. Если больше то значит что-то у тя там не чисто дело.

Кстати, зная время рендера мона вычислить FPS - для этого 1000 нуно поделить на время рендера (1 секунда = 1000 мсек) ;)

З.Ы. Ну, вру, это не точное вычисление ФПС - ведь мы измеряем только время рендера, а ФПС составляет весь цикл. Ну, короче, подумай на досуге. На твой вопрос я ответил.

Maestro 05.08.2007 16:51

Re: Анимация (и еще пару вопросов)
 
Belamore, значит каждый раз, вначале цыкла Millisecs() обнуляется, и считает милисикунды, пока этот цыкл не зываршится?

jimon 05.08.2007 17:21

Re: Анимация (и еще пару вопросов)
 
Maestro
millisecs() ето просто таймер, он работает все время :) никогда не обнуляется

к примеру :
в начале проги пишем
ms = millisecs()
...
в цикле
work = Millisecs() - ms
print "programm work time : "+work
...

Leito 05.08.2007 17:23

Re: Анимация (и еще пару вопросов)
 
jimon, не он обнуляется иногда.)

Maestro 05.08.2007 18:02

Re: Анимация (и еще пару вопросов)
 
Гм. странные она значения принимает.
Скопируйте это в блиц:
While Not KeyHit(1)
Print MilliSecs()
Wend
Там какие-то гиганские цыферки получаются... почему он не с нуля считает?

jimon 05.08.2007 18:09

Re: Анимация (и еще пару вопросов)
 
Maestro
оно начинает с нуля ... когда винда стартует (поидее)
хотя фиг его знает что собсно оно щитает

ps. из справки модуля blitzmax'а :
"Get millisecond counter
Returns: Milliseconds since computer turned on."
так что оно возвращает количество милисек со времени врубления компа

Maestro 05.08.2007 18:46

Re: Анимация (и еще пару вопросов)
 
Гыыы. у меня за миллиард перевалило .)))

может ты знаешь как решить одну проблемку?
Короче проблема у меня со взрывом. Надо чтобы при столкновении корабль изчезал, проигрывался взрыв, потом корабль оживал... впринципе я все это сделал, НО единственнй способ, которым я смог сделать взрыв - это постоянно проигрывать анимтекстуры на модели, а саму модель при столкновении показывать, и при окончании кадров в ленте (некстуре) опять прятать... поэтому при столкновении анимация проигрывается не с начала, а как захочет...
Может можно как-то подругому сделать... или этот способ модфицировать...

Leito 05.08.2007 19:30

Re: Анимация (и еще пару вопросов)
 
1000000000/1000 = 1000000 секунд
1000000/3600 = 277 часов
277/24 = 11,5 суток

тоесть у тя полторы недели комп включен.

вывод: ты гонишь. или команда показывает не "количество милисек со времени врубления компа"

Android 05.08.2007 19:44

Re: Анимация (и еще пару вопросов)
 
Цитата:

Сообщение от Leito
1000000000/1000 = 1000000 секунд
1000000/3600 = 277 часов
277/24 = 11,5 суток

тоесть у тя полторы недели комп включен.

вывод: ты гонишь. или команда показывает не "количество милисек со времени врубления компа"

Ну почему гонишь - у меня комп уже около трех недель включенный стоит;)

Maestro 05.08.2007 20:39

Leito, упс. обсчитался. не миллиард, а 100 миллионов .))

Фух. Со взрывом разобрался. Так что если кто-то хотел помочь, обломитесь .) сам сделал.) Как только будут звуки вылажу демку (правда она отличается от прошлой практически только внешним видом:))

Leito 06.08.2007 00:49

Re: Анимация (и еще пару вопросов)
 
LaZZZeR, рекорд! Millisecs()=2 милиарда!
довайте соревнование устроим! по времени включения компа))
причем не перезагружая его!

Maestro 06.08.2007 01:05

Re: Анимация (и еще пару вопросов)
 
Leito, ага. только подтверждать скриншотом...

Maestro 06.08.2007 23:30

Re: Анимация (и еще пару вопросов)
 
Вот наконец добрался до звуков... что-то у меня не получается с первым же звуком. Проблема вот в чем: надо, чтобы при навидении на кнопку проигрывался один звук, при нажатии другой... ну короче все как положено. Но не могу реализовать. У меня есть функция для кнопки:
Код:

Function RefreshButton(ImBtn,x,y,txt$,n)
mx=MouseX(): my=MouseY()
MHit=MouseDown(1)
If RectsOverlap(x,y,ImageWidth(ImBtn),ImageHeight(ImBtn),mx,my,1,1) Then
  f=1
  y2=0
  If MHit=True Then
    f=2
    y2=2
    Button(n)=1
  EndIf
Else
  f=0
  y2=0
EndIf
DrawImage ImBtn,x,y,f
Color 0,0,0
Text x+0.5*(ImageWidth(ImBtn)+4-Len(txt$)*FontHeight()*0.5),y+0.5*(ImageHeight(ImBtn)-4-FontHeight())+y2,txt$
End Function

Не могу сделать все как положено. Либо (если просто плейсаунд) при навидении на кнопку постоянно проигрывается звук. Либо (добавив пару монипуляций) проигравается только один раз... Я пытался сделать вот так:
Код:

Function RefreshButton(ImBtn,x,y,txt$,n)
mx=MouseX(): my=MouseY()
MHit=MouseDown(1)
If RectsOverlap(x,y,ImageWidth(ImBtn),ImageHeight(ImBtn),mx,my,1,1) Then
If sou=1 Then
  PlaySound SelectBut
  sou=0
 EndIf

  f=1
  y2=0
  If MHit=True Then
  If sou=0 Then
    PlaySound ClickBut
    sou=1
  EndIf

    f=2
    y2=2
    Button(n)=1
  EndIf
Else
sou=1
  f=0
  y2=0
EndIf
DrawImage ImBtn,x,y,f
Color 0,0,0
Text x+0.5*(ImageWidth(ImBtn)+4-Len(txt$)*FontHeight()*0.5),y+0.5*(ImageHeight(ImBtn)-4-FontHeight())+y2,txt$
End Function

поидее строчка sou=1 должна выполняться только когда мышь не наведена на кнопку, но выполняется все время, и звук воспроизводится постоянно .(


ЗЫ: и почему не грузятся шрифты в названии которых присутствует "_"?

IGR 07.08.2007 12:40

Re: Анимация (и еще пару вопросов)
 
Цитата:

поидее строчка sou=1 должна выполняться только когда мышь не наведена на кнопку, но выполняется все время, и звук воспроизводится постоянно .(
ты попробуй sou=0 т.е. звук не будет играть !!

Maestro 07.08.2007 13:20

Re: Анимация (и еще пару вопросов)
 
IGR, ыы. если ставить sou=0, при наведении курсора на кнопку вообще не будит никаких звуков, а при нажатии на кнопку (если не отпускать ЛКМ) звук проигрывается вечно.

А нет команды типа MouseDown(1), только чтобы проверялось не нажатие, а отжатие после нажатия?

IGR 07.08.2007 13:28

Re: Анимация (и еще пару вопросов)
 
тогда зделай две переменных для звуков sou1 , sou2 !!
и попробуй так :

Function RefreshButton(ImBtn,x,y,txt$,n)
mx=MouseX(): my=MouseY()
MHit=MouseDown(1)
If RectsOverlap(x,y,ImageWidth(ImBtn),ImageHeight(ImB tn),mx,my,1,1)
sou1=1
f=1
y2=0
If MHit=True
sou2=1
f=2
y2=2
Button(n)=1
EndIf
Else
f=0
y2=0
EndIf

If sou1=1 Then
PlaySound SelectBut
sou1=0
EndIf

If sou2=1 Then
PlaySound ClickBut
sou2=0
EndIf

DrawImage ImBtn,x,y,f
Color 0,0,0
Text x+0.5*(ImageWidth(ImBtn)+4-Len(txt$)*FontHeight()*0.5),y+0.5*(ImageHeight(ImB tn)-4-FontHeight())+y2,txt$
End Function

Maestro 07.08.2007 13:38

Re: Анимация (и еще пару вопросов)
 
Да нет. я так тоже пытался. Смотри. Мы пишем
If sou1=1 Then
PlaySound SelectBut
sou1=0
EndIf
Но тут же проверяем, наведен ли курсор на кнопку, получаем положительный ответ, и...
If RectsOverlap(x,y,ImageWidth(ImBtn),ImageHeight(ImB tn),mx,my,1,1)
sou1=1
f=1
...
Следовательно звук каждый раз и проигрывается.

IGR 07.08.2007 13:50

Re: Анимация (и еще пару вопросов)
 
Цитата:

Но тут же проверяем, наведен ли курсор на кнопку, получаем положительный ответ, и...
If RectsOverlap(x,y,ImageWidth(ImBtn),ImageHeight(ImB tn),mx,my,1,1)
sou1=1
f=1
я не пойму почему мы получаем положительный ответ !!
или ты хочеш чтоб звук проигрался один раз когда ты только первый раз подвидеш мышку к кнопке ??
тогда напиши :
If RectsOverlap(x,y,ImageWidth(ImBtn),ImageHeight(ImB tn),mx,my,1,1)
sou1=sou1+1
f=1
y2=0
.....
следовательно когда мы второй раз проверяем RectsOverlap то sou1=2 и звук играть не будет !!

Maestro 07.08.2007 13:56

Re: Анимация (и еще пару вопросов)
 
Вложений: 2
IGR, мне надо, чтобы при наведении на одну кнопку проигрался один звук один раз, потом если отвести от кнопки курсор, а потом навести обратно на нее же или на другую кнопку, сново проигрался тот же звук один раз.
Поэтому если наращивать переменную sou1=sou1+1, ее надо как-то вернуть если увести курсор от кнопки....
Вот кстати код (там звуки и кнопка прилогаются)

IGR 07.08.2007 14:01

Re: Анимация (и еще пару вопросов)
 
Function RefreshButton(ImBtn,x,y,txt$,n)
mx=MouseX(): my=MouseY()
MHit=MouseDown(1)
If RectsOverlap(x,y,ImageWidth(ImBtn),ImageHeight(ImB tn),mx,my,1,1)
sou1=1+1
f=1
y2=0
If MHit=True
sou2=1
f=2
y2=2
Button(n)=1
EndIf
Else
sou1=0;если мышко не возле кнопки - обнуляем переменную
f=0
y2=0
EndIf

If sou1=1 Then
PlaySound SelectBut
sou1=0
EndIf

If sou2=1 Then
PlaySound ClickBut
sou2=0
EndIf

DrawImage ImBtn,x,y,f
Color 0,0,0
Text x+0.5*(ImageWidth(ImBtn)+4-Len(txt$)*FontHeight()*0.5),y+0.5*(ImageHeight(ImB tn)-4-FontHeight())+y2,txt$
End Function


код шас посмотреть не могу, так как я не дома !!
вечером посмотрю !!

Maestro 07.08.2007 14:27

Re: Анимация (и еще пару вопросов)
 
Ну. вот мы проктически и пришли к моему первому варианту. Проблема в том, что все после Else выполняется почемуто в любом случае... и все время sou1=0, следовательно звук вообще никогда не проиграется. А т.к. sou2=1 всегда, то при нажатии и держании кнопки мыши постоянно будет проигрываться звук нажатия .) Короче замкнутый круг.


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

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