forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Смена Анимации. (http://forum.boolean.name/showthread.php?t=10338)

Ganociy 18.11.2009 13:33

Смена Анимации.
 
Вот смотрите , давно уже меня эта проблема терроризирует. Дано две анимации для зомби : бег , атака.
Если расстояние между игроком и зомби =<5, то анимировать зомби атака.
Иначе если расстояние между игроком и зомби >5, то анимировать зомби ходьба.
Вот у меня происходит зацикливание на анимации атака и дальше не хочет
анимировать ходьбу . Эта проблема возникла ещё очень давно.

P.S. Если есть ссылки на примеры с исходниками буду рад! Или ссылка на тему в форуме.

IGR 18.11.2009 13:43

Ответ: Смена Анимации.
 
ты привязываешься со всем не к тому !! :stop:
что главнее ?? состояние в котором сейчас бот (атака преследование ходьба побег) или какая анимация у него счас проигрывается ??

нада функа типа SwitchBotState, которая меняет состояние бота !!
а в этой уже функе меняешь анимацию бота и все остальное что те нужно !!
а эта функа будет вызывается когда бот приблизился на 5 к персу !!

Nex 18.11.2009 13:49

Ответ: Смена Анимации.
 
Ganociy, > http://forum.boolean.name/showthread.php?t=8250
IGR, +1

Ganociy 18.11.2009 14:00

Ответ: Смена Анимации.
 
IGR , а что это за фун-ия SwitchBotState

IGR 18.11.2009 14:15

Ответ: Смена Анимации.
 
ну ее самому нада написать !! ;)
Код:

Function SwitchBotState()
;
;
End Function


NitE 18.11.2009 16:44

Ответ: Смена Анимации.
 
как всегда - http://forum.boolean.name/showthread.php?t=7532
тиам правда не совсем то что надо, но уже кое-что, исправлять лень - сам какнибудь ))

Ganociy 20.11.2009 12:44

Ответ: Смена Анимации.
 
Ребята ну очень срочно нужен код смены анимации.
SkyDream , спасибо частично помогло.

Mhyhr 20.11.2009 13:24

Ответ: Смена Анимации.
 
Код смены анимации пишется конкретно под твои нужды И параметры, И пишется в идеале тобой
...Или ищи в старых темах булки.

Артем Валерьевич 20.11.2009 19:31

Ответ: Смена Анимации.
 
Кастл тебе в помощь, там у буратино анимка меняется

Ganociy 24.11.2009 07:56

Ответ: Смена Анимации.
 
Нет блин ничего не получается!!! Уже задал%ался!!! Хееееееееееееееелп!

Артем Валерьевич 24.11.2009 08:24

Ответ: Смена Анимации.
 
до цикла пишешь,
Код:


 
твой персонаж=LoadAnimMesh("путь к персу\перс.b3d")
ExtractAnimSeq( твой персонаж,первый кадр,последний кадр,название секвенции)
ExtractAnimSeq( твой персонаж,первый кадр,последний кадр,название секвенции)
ExtractAnimSeq( твой персонаж,первый кадр,последний кадр,название секвенции)

В цикле пишем:

Код:


If KeyDown (UP) Then
 
If Pers_speed#<=0
Pers_speed#=0.75
Animate твой персонаж,2,Pers_speed#,1,0
EndIf
 
Else If KeyDown (DN) Then
 
If Pers_speed#<=0
Pers_speed#=0.75
Animate твой персонаж,2,Pers_speed#,1,0
EndIf
 
Else If Pers_speed#;<=0
 
Pers_speed#=0;.7
Animate твой персонаж,2,Pers_speed#,2
 
EndIf


Ganociy 26.11.2009 15:33

Ответ: Смена Анимации.
 
Артёв Валерич. Нескромно благодарен. Но это я научился делать давныыым-
давноооо! Ты выше записи читал ??? ===>>>
Вот смотрите , давно уже меня эта проблема терроризирует. Дано две анимации для зомби : бег , атака.
Если расстояние между игроком и зомби =<5, то анимировать зомби атака.
Иначе если расстояние между игроком и зомби >5, то анимировать зомби ходьба.
Вот у меня происходит зацикливание на анимации атака и дальше не хочет
анимировать ходьбу . Эта проблема возникла ещё очень давно.

H@NON 26.11.2009 16:23

Ответ: Смена Анимации.
 
проверять текущую проигрываемую секвенцию, и если она не совпадает с требуемой, то проигрывать анимацию. Для проверки текущей секвенции команда AnimSeq.

Ganociy 26.11.2009 18:00

Ответ: Смена Анимации.
 
Ну попробуем...
да и ещё ... Делаю функцию бота ...

Function CreateBot(mesh,x,y,z)
s.bot=New bot
s\entity=LoadAnimMesh ("data\bots\Zombie.b3d")
PositionEntity s\entity,x,y,z
ScaleEntity s\entity,0.05,0.05,0.05
EntityBox s\entity,-1,2,-0.5,1,1,1
EntityPickMode s\entity,3
End Function

Function updatebot ()
For a.bot=Each bot
MoveEntity a\entity,0,0,-0.01
Next
End Function

создаю ну скажем от 1 до 5 бота. Усё ОК ...
в проверке пика пишу-

If MouseDown(1) And MilliSecs()-last_shot_time>shot_delay And bullets>0 And reloading=0
PlaySound firesound
bullets=bullets-1
last_shot_time=MilliSecs()
pick=CameraPick(cam, CentreX+Rnd(-10,10),CentreY+Rnd(-10,10))
If pick<> 0Then
makehole(hole,holes)
makespark(spark,sparks,220)
Create_bah(140)
For t.bot=Each bot
FreeEntity t\entity
Delete t
Create_bah(740)
CreateBot(zombie,Rnd (-30,30),0,Rnd(-30,30))
Next
EndIf
Animate smg,3,.2,fire,5
EndIf

Так вот у меня с карты удаляются все боты а хочется что бы один. Что я не дописал??

Артем Валерьевич 26.11.2009 18:20

Ответ: Смена Анимации.
 
Один человек говорил что лучше научить ловить рыбу чем дать удочку, но мы все равно на теже грабли.
Код:


 
PickedEntity = CameraPick (a.MatchMan\cam,MouseX,MouseY)


If PickedEntity <> 0
For h.ZombyBot=Each ZombyBot
If EntityDistance ( a.MatchMan\PiwotPers,h\ZombySphere)<10 Then
;If ZomLiw=True
;For h.ZombyBot=Each ZombyBot


If PickedEntity = h\ZombySphere Then
h\ZombyHealth#=h\ZombyHealth# - .5
FreshBlood(blood)
If h\ZombyHealth# <=0 Then
h\ZombyHealth#=0

If AnimSeq( h\ZombyMesh ) <> dead_zomby Then Animate h\ZombyMesh,3,.3,dead_zomby
kills = kills + 1:h\ZomLiw=False:FreeEntity h\ZombySphere:Delete h:PickedEntity=0
;CreateZomby("AData\ABitmap\ANps\Arahna.b3d",EntityX(a.MatchMan\PiwotPers)+Rnd(-3,3),2,EntityY(a.MatchMan\PiwotPers)+Rnd(-3,3),1,FoolLives,70)
EndIf
EndIf
EndIf
Next
EndIf


KingMaks 26.11.2009 22:59

Ответ: Смена Анимации.
 
Артем Валерьевич ты там чуть выше написал пример анимации
так у меня всегда какуето ашибку выдает вот мой код:


If KeyDown(200) Then
If AnimSeq(player) = 0
Animate player, 1, 0.5, 1, 10
End If

Else

If AnimSeq(player)=1
Animate player, 2, 1, 0, 10
End If

ОШИБКА: "FOREVER" without "repeat"
а када другими способами пишет "endif" without "else"

Артем Валерьевич 27.11.2009 10:19

Ответ: Смена Анимации.
 
Цитата:

Артёв Валерич. Нескромно благодарен. Но это я научился делать давныыым-
давноооо! Ты выше записи читал ??? ===>>>
Копипастеры в штабе! Живьём брать!!!


If KeyDown(200) Then
If AnimSeq(player) <> 0 Then Animate player, 1, 0.5, 1, 10
End If

Else
If AnimSeq(player)<>1 then Animate player, 2, 1, 0, 10
;End If

DeadElf 29.11.2009 20:36

Ответ: Смена Анимации.
 
KingMaks,если я правильно понимаю о чём ты, то:

If KeyDown(200) Then
If AnimSeq(player) = 0
Animate player, 1, 0.5, 1, 10
End If

Else

If AnimSeq(player)=1
Animate player, 2, 1, 0, 10
End If
End If

KingMaks 29.11.2009 21:57

Ответ: Смена Анимации.
 
та уже пашет все))

Ganociy 01.12.2009 13:01

Ответ: Смена Анимации.
 
Цитата:

Сообщение от DeadElf (Сообщение 127523)
KingMaks,если я правильно понимаю о чём ты, то:

If KeyDown(200) Then
If AnimSeq(player) = 0
Animate player, 1, 0.5, 1, 10
End If

Else

If AnimSeq(player)=1
Animate player, 2, 1, 0, 10
End If
End If

Ребята, выдействительно меня не понимаете?! Или я не так спрашиваю ?!
Я прошу код смены анимации у БОТА . Дан игрок , дан БОТ. Бот умеет драться и бегать.
Таквот выражаююсь русским языком .
Если дистанция между игроком и ботом меньше 5 , то анимировать бота анимацией АТАКА.
Если дистанция между игроком и ботом больше 5 , то анимировать юота анимацией БЕГ.
Но дело в том ,что он после того как проанимировался АТАКОй и дистанция уже стала меньше пяти, то он продолжакт дальше анимироваться АТАКОЙ , а не БЕГОМ. Т.е. зацикливается.
Так вот как сделать так, что бот как и вдругих нормальных играх не зацикливался?!

H@NON 01.12.2009 13:14

Ответ: Смена Анимации.
 
Код:

dist# = EntityDistance(player, bot)
If dist < 5 Then
      If AnimSeq(bot) <> seqAttack  Animate bot, 1, 0.5, seqAttack
Else
      If AnimSeq(bot) <> seqRun  Animate bot, 1, 0.5, seqRun
Endif


Ganociy 04.12.2009 18:37

Ответ: Смена Анимации.
 
И опять же как , да есть !!! Когда переходит границу дистанции 5-ти , то как бешенный кролик влево в право и всё . Выходит за границы 5-ти хорошо анимируется ходьбой. Хр#новина какая та.
Вот код создания и апдейта бота. (наш бот - model.На остальное не обращайте внимания.)

Function create_bot(x#,y#,z#)
b.bot=New bot
b\model=LoadAnimMesh ("Data\Bots\Zombie.b3d")
b\animrun=LoadAnimSeq (b\model,"Data\Bots\run.b3d")
b\animattack=LoadAnimSeq (b\model,"Data\Bots\attack.b3d")
Animate b\model,1,Rnd (0.4,1.8),b\animrun
ScaleEntity b\model,0.05,0.05,0.05
PositionEntity b\model,x#,y#,z#
;RotateEntity b\model,0,-180,0
b\entity=CreateSphere(32,b\model)
ScaleEntity b\entity,15,30,10
;PositionEntity b\entity,x#,y#,z#
MoveEntity b\entity,-3,40,-5
EntityAlpha b\entity,0
EntityPickMode b\entity,2
b\life=10
Return True
End Function

Function update_bot()
v#=Rnd (0.01,0.07)
For a.bot=Each bot
TurnEntity a\model,0,Sgn(DeltaYaw(a\model,player))*-0.9,0
MoveEntity a\model,0,0,-v#
;AI
dist#=EntityDistance (a\model,player)
If dist < 5 Then
If AnimSeq (a\model)<>a\animattack
Animate a\model,3,1,a\animattack,2
Else
If AnimSeq (a\model) <> a\animrun
Animate a\model,3,1,a\animrun,1
EndIf
EndIf
EndIf
;EndAI
Next
End Function

H@NON 04.12.2009 19:10

Ответ: Смена Анимации.
 
Блииин, ты выносишь всем мозг) Мало того, что тебе объяснили каждую команду, так тебе еще и каждый параметр в этой команде объяснять нужно? Юзай скорость в Animate


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

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