Animatorにて複数の表情の切り替えをAnimetion+アニメーションイベントで呼び出すスクリプトで制御できるようにしたいのですが。
発生している問題
スクリプトで制御するブレンドシェイプ(ここではA,B,Cとする)があり
アニメーションAで制御するブレンドシェイプ(D,E,F)があるとして
この条件だとアニメーションイベントから呼びだした関数でブレンドシェイプの
変更ができるのですが。
アニメーションB(ブレンドシェイプA,B,Dの様にスクリプト制御してるやつが混ざってる)をアニメーター中に
追加するとスクリプトで変更が出来なくなります。
もちろんそこに遷移してる状態では無く、下の様にトランジションをつないでなくても発生します。
呼び出してるはstartLv7()になります。
using
1using System.Collections.Generic; 2using UnityEngine; 3 4public class RandomMoph22 : MonoBehaviour 5{ 6 public Animator anim; 7 public SkinnedMeshRenderer mophObject; 8 public Material tereMat; 9 public float actionTime; 10 private float countTime; 11 12 // Start is called before the first frame update 13 void Start() 14 { 15 16 } 17 18 // Update is called once per frame 19 void Update() 20 { 21 22 23 } 24 25 public void startLv7() 26 { 27 StartCoroutine("Facelv7"); 28 } 29 30 // ランダム判定用関数 31 IEnumerator Facelv7() 32 { 33 34 // 無限ループ開始 35 while (true) 36 { 37 38 tereMat.color = Color.red; 39 float scaleVal = Random.Range(80.0f, 90.0f); 40 float scaleVal2 = Random.Range(70.0f, 90.0f); 41 float scaleVal3 = Random.Range(10f, 20f); 42 43 mophObject.SetBlendShapeWeight(4, scaleVal); 44 mophObject.SetBlendShapeWeight(7, scaleVal3); 45 46 mophObject.SetBlendShapeWeight(20, scaleVal3); 47 48 mophObject.SetBlendShapeWeight(91, scaleVal2); 49 mophObject.SetBlendShapeWeight(92, scaleVal2); 50 51 countTime += 0.2f; 52 53 yield return new WaitForSeconds(0.1f); 54 55 Debug.Log(scaleVal2); 56 57 //ここでリセット 58 if (countTime >= actionTime) 59 { 60 61 tereMat.color = Color.white; 62 mophObject.SetBlendShapeWeight(4, 0f); 63 mophObject.SetBlendShapeWeight(7, 0f); 64 mophObject.SetBlendShapeWeight(20, 0f); 65 mophObject.SetBlendShapeWeight(91, 0f); 66 mophObject.SetBlendShapeWeight(92, 0f); 67 anim.SetTrigger("ResetTrigger"); 68 countTime = 0; 69 break; 70 } 71 72 } 73 } 74 75} 76
アニメーションとスクリプトなどで同時に制御したいのですが
この方法では、アニメーター内にスクリプトで制御するブレンドシェイプにかぶりがあった場合
干渉しできなくなるのでしょうか?
それとも根本的な間違いがあるのでしょうか?
補足情報(FW/ツールのバージョンなど)
皆様のご知恵お貸しください、どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/31 02:52