前提・実現したいこと
ボタンを押したら別のキャラクターに切り替えたい
発生している問題・エラーメッセージ
http://miyas-maincontents.blogspot.com/2016/03/blog-post_23.html
上記のサイトのソースコードとほぼ同じものを作って実装してみました。結果としてキャラクターを切り替えることはできたのでが、アニメーションがついていませんでした。厳密には一番最初のキャラクターにはアニメーションがついているのですが、切り替え先のキャラクターにはついていませんでした。そもそもなぜ親オブジェクトについているアニメーションが子オブジェクトにも反映されるのでしょうか?
using System.Collections; using UnityEngine; public class CharacterChange : MonoBehaviour { public Avatar[] avatars = new Avatar[2]; public GameObject[] characters = new GameObject[2]; private int index = 0; private Animator playerAnimator; // Start is called before the first frame update void Start() { playerAnimator = GetComponent<Animator>(); } // Update is called once per frame void Update() { Change(); } void Change() { if (Input.GetKeyDown(KeyCode.X)) { index++; if (index == 2) index = 0; foreach(GameObject gamObj in characters) { gamObj.SetActive(false); } characters[index].SetActive(true); playerAnimator.avatar = avatars[index]; } } }
試したこと
プログラムからアニメーションの切り替えをすればできるのかなと思い、以下のプログラムを追加したのですが、何も変わりませんでした。どうしたらよいでしょうか?どなたか教えてください。
public class CharacterChange : MonoBehaviour { public Avatar[] avatars = new Avatar[2]; public GameObject[] characters = new GameObject[2]; private int index = 0; private Animator playerAnimator; //追加 public RuntimeAnimatorController[] animators = new RuntimeAnimatorController[2]; void Change() { if (Input.GetKeyDown(KeyCode.X)) { index++; if (index == 2) index = 0; foreach(GameObject gamObj in characters) { gamObj.SetActive(false); } characters[index].SetActive(true); playerAnimator.avatar = avatars[index]; //追加 playerAnimator.runtimeAnimatorController= animators[index]; } } }
補足情報(FW/ツールのバージョンなど)
Unityのバージョンは2019.4.3f1です。
足りない情報があれば教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。