私の状態やアニメーションは自分ではありません。Animator Stateの再生とAnimationClipの再生の違いは何ですか?なぜアニメーションクリップを再生できないのですか?
アニメータコンポーネントが添付されたキャラクタのプレハブがあります。階層内のキャラクタには、状態とブレンドを持つAnimatorがあり、アニメーションクリップもいくつかあります。
アニメーターの状態を再生/実行すると、アニメーションを再生しているという意味ですか?または、アニメーションクリップが別のものですか?
なぜアニメーションクリップを再生できないのですか?エラーや例外が発生しているわけではありません。
ここには、この文字に付けられたスクリプトがあります。この文字には、アニメーションコンポーネントも追加されています。キャラクターオブジェクトにはAnimatorとAnimationの両方のコンポーネントがあります。私はそれを一つの状態を1つずつ再生して、キーの上に正常に動作している私はすべてをクリックするたびに、クリックすると
Aiming
Death_A
Use
Grounded
Roll
PickupObject
Reload_Rifle
Shoot_Rifle
Empty
私は再生することができます:変数インサイド
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
public class SwitchAnimations : MonoBehaviour
{
private Animator animator;
private int index = 0;
private static UnityEditor.Animations.AnimatorController controller;
private UnityEditor.Animations.AnimatorState[] an;
// Use this for initialization
void Start()
{
animator = GetComponent<Animator>();
an = GetStateNames(animator);
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
animator.Play(an[index].name);
if (++index == an.Length)
index = 0;
}
}
private static UnityEditor.Animations.AnimatorState[] GetStateNames(Animator animator)
{
controller = animator ? animator.runtimeAnimatorController as UnityEditor.Animations.AnimatorController : null;
return controller == null ? null : controller.layers.SelectMany(l => l.stateMachine.states).Select(s => s.state).ToArray();
}
private void RollSound()
{
}
private void CantRotate()
{
}
private void EndRoll()
{
}
private void EndPickup()
{
}
}
は9つの状態があります文脈を選択して階層内にいるときにエディタの中にあるのはどういうことですか?Window> Animator私は9つの状態を見ることができます。 LegsLayer:
しかし、私は状態をクリックしてダブルクリックするとブレンドツリーが表示され、これも状態であるのか、それともアニメーションクリップであるのか分かりませんか?では、どうすればそれらにアクセスできますか?
[OK]をこれは私がアニメーターと何をどのように私はそれで遊ぶことができますについてはまだ理解していない一部です。
2番目の部分はAnimationClip/sに関連しており、なぜ再生できないのですか?
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEditor.Animations;
using UnityEngine;
public class SwitchAnimations : MonoBehaviour
{
private Animation animation;
private AnimationClip[] animationClips;
// Use this for initialization
void Start()
{
animation = GetComponent<Animation>();
animationClips = AnimationUtility.GetAnimationClips(gameObject);
foreach (AnimationClip clip in animationClips)
{
animation.AddClip(clip, clip.name);
}
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
animation.clip = animationClips[6];
animation.Play(animationClips[6].name);
}
}
private void RollSound()
{
}
private void CantRotate()
{
}
private void EndRoll()
{
}
private void EndPickup()
{
}
private void FootStep()
{
}
}
と私は9つのアニメーション持つ変数animationClipsで::私はで見るこの時点でゲームやクリックを実行している場合は
Rifle_Aiming_Idle
Rifle_Aiming_Walk_F_RM
Rifle_Aiming_Walk_B_RM
Rifle_Aiming_Walk_L_RM
Rifle_Aiming_Walk_R_RM
Rifle_Idle
Rifle_Walk_F_RM
Rifle_Run_F_RM
Rifle_Sprint_F_RM
をアニメーションクリップの
スクリプトアニメーションコンポーネント内のインスペクタはすべてアニメーションクリップになり、アニメーションではアニメーションクリップが再生されます。
エラーや例外は発生しませんが、再生していないだけです。キャラクターはまだアイドルのままです。私が5または3または1を再生する別のアニメーションクリップインデックスを選択したとしても、何も再生されていません。
なぜ私はAをクリックしたときにアニメーションを再生していないのだろうか?この例ではリストからアニメーション番号6が再生されていない。
私はそれを読んでするつもりです。しかし、私が一般的に理解しているかどうかを確認するために、アニメーションクリップを再生したい場合は、アニメーターで新しい状態を作成し、この状態にアニメーションクリップを追加する必要があります。アニメーションを再生する。 (ちょうど私が現在の状態を演奏しているように動作していますが、アニメーションクリップを状態に追加して再生する必要があります)。 –
はい、それです。 'Animator Controller'には' Animation Clip'(状態がブレンドツリーの場合はそれ以上)を含む状態が含まれます。 – Galandil
大変ありがとうございました。 –