- 2022.03.28 Monday
- スポンサーサイト
-
一定期間更新がないため広告を表示しています
- | スポンサードリンク | - | | - | - | pookmark |
- 2016.03.24 Thursday
- AnyStateからSetInteger ("State", 100)するとビクビクする件
-
「なぜSetIntegerはモーションが終わる前にステートを発行してしまうのでしょうか?」
AnyStateからSetInteger ("State", 100);するとビクビクします
Animator にInt で"State" という名前のパラメータを作りました。
AttackのStateを作り
AnyStateから
Animator State TransitionのやじるしのConditionsで
State Equals 100 の条件を付けました。
AnyStateから animator.SetInteger ("State", 100);
をするとずっと ビクビクしてしまって
アニメーションが最後まで再生されません。
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class TapSwichMotionScript : MonoBehaviour,IPointerClickHandler {
Animator animator;
string buttonName;
void Start () {
buttonName = gameObject.name;
animator = GameObject.Find ("FMSkeleton").GetComponent<Animator> ();
}
public void OnPointerClick (PointerEventData eventData)
{
switch (buttonName)
{
case "Attack":
animator.SetInteger ("State", 100);
break;
case "Skill":
animator.SetInteger ("State", 200);
break;
default:
break;
}
}
}
http://hiyotama.hatenablog.com/entry/2015/06/29/090000
Can Transition ToSelf チェックを外したらガクつかず再生されるけど
途中でもう一度最初から再生できないことになる
検証用データはこちらです
https://github.com/whaison/AnyStateInt
キャラごとにステートは違う可能性がありクライアントコードでそれを吸収するため
AnimmationContraller.contrallerをAssetBundleに含む状態が多く
さらにパンチを2回読んだら呼ばれたタイミングでパンチを2回歳再生する必要があったため
AnyStateは変えられない状態がありました。
EventTriggerで解決しました。
FBXの設定 Animationタブの下の Events にイベントをOnMotionStartなど設定します。
それをFBXのイベントを受け取るようにこう下のように書いてヒエラルキーのFBXにはっつけます
using UnityEngine;
using System.Collections;
public class MotionEventHandler : MonoBehaviour {
Animator animator;
int StateInt;
void Start()
{
animator = gameObject.GetComponent<Animator> ();
}
public void OnMotionStart()
{
//FixCode///////////////////////////////////
animator.SetInteger ("State", -1);
/////////////////////////////////////////////
StateInt = animator.GetInteger ("State");
if (StateInt== 0) {
} else {
Debug.Log ("OnMotionStart() StateInt="+StateInt);
}
}
}
https://youtu.be/_51qrLvG2sc
検証用データもFixしてコミットしておきました。
https://github.com/whaison/AnyStateInt
- | whaison | Unity3d | 22:26 | comments(0) | - | pookmark |
- Comment