Timeの代用

0 Comments
かんなつき
常時監視でステ抜けしたり、Hitoverrideを使った時にステート移動が発生したりするとTimeが上手く機能しなくなるので何らかの手段で代用する必要がある。

ループアニメを使わないステートではAnimElemTime()を使うのが楽ちん。TimeとAnimElemTime()はだいたい同じになる。()のなかは、ステートで始まるアニメのelemnoを入れればいい。
ただ、この方法だとChangeAnimステコンだけ注意がいる。

[State ]

type = ChangeAnim

trigger1 = Time=0

value = X

elem = Y

ignorehitpause = 1


このステコンの実行のあとはトリガーのTimeをAnimElemTime(Y)に置換するだけでいい。

ただし、このステコンのTimeだけは別の判断基準が必要になる。Time=0でアニメを変えるなら、Anim!=Xのようなトリガーがおすすめ。


ループするアニメでは、ループしたときにTimeとAnimElemTime()がずれるのでこの方法は使えない。この時は変数で管理するのが一番楽だと思う。

色々方法はあるけど自分はステコンを二つ用意してる。


[State ];Time加算

type = VarAdd

trigger1 = Anim=X

var(0) = 1


[State ];Timeリセット

type = VarSet

trigger1 = Anim!=X

var(0) = 0

ignorehitpause = 1


わざわざステコン二つに分けたのはhitpausetimeがあるから。Timeはhitpausetimeの有無によらずステート移動でリセットされる。一方でhitpausetimeがある限りTimeは進まない。この仕様の再現のために二つに分けている。他にもトリガーを調整すれば、ステート移動後にもTimeを持続させたりできるから結構小回りが利くよ。


[State ];Time

type = Null

trigger1 = Anim=X && !hitpausetime

trigger1 = var(0):=var(0)+1||1 ;Time加算

trigger2 = Anim!=X

trigger2 = var(0):=0

ignorehitpause = 1


Nullを使って一つにまとめるならこっちを使うとイイよ。やってることは上の二つと全く同じはず。ただ、代用の変数にsysvarを使えないから注意ね。

スポンサーサイト
かんなつき
Posted byかんなつき

Comments 0

There are no comments yet.

Leave a reply