這些國家和動畫不是我自己的。玩動畫師狀態和/或玩AnimationClip有什麼區別?爲什麼我不能播放動畫片段?
我有一個角色的動畫製作組件附加到它的預製。層次結構中的角色具有一些狀態和混合的動畫師,並且還有一些動畫片段。
現在,當我玩/運行一個動畫師的狀態是,這意味着我正在播放動畫?或者動畫片段是另一回事?
爲什麼我不能播放動畫片段?我沒有得到錯誤或例外,它只是不玩它。
這是一個附加到這個角色的腳本,我還爲這個角色添加了一個Animation組件。所以現在這個角色對象同時擁有Animator和Animation組件。
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個州:
Aiming
Death_A
Use
Grounded
Roll
PickupObject
Reload_Rifle
Shoot_Rifle
Empty
當我上的按鍵我每次點擊一個一切正常單擊它的演奏狀態逐一我可以玩點擊A上的9個狀態。
我不明白與國家是在編輯器內,當我在層次結構中選擇字符,並在菜單中使:Window> Animator我看到9個州腿層:
不過,如果我點擊狀態接地雙擊我看到了一個混合樹,我不知道這是還規定或者也許這是動畫片段?那我怎樣才能訪問它們?
確定這是一個部分我還不知道有關的動畫,什麼,以及如何我可以用它玩。
第二部分與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()
{
}
}
,由可變animationClips我有9個動畫:
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
當我運行遊戲並點擊一個這個時候,我在看Inspector中的Animation組件包含所有的動畫片段,而在Animation中,我看到要播放的動畫片段。
我沒有得到任何錯誤或例外,但它只是沒有玩它。角色保持閒置。即使我選擇另一個動畫片段索引播放5或3或1,也沒有播放。
我想知道爲什麼當我點擊A時它不會播放動畫。在這種情況下,列表中的動畫編號爲6,但仍未播放。
我要讀它。但只是爲了看看我是否能夠理解它:如果我想要播放這些動畫片段中的一個,我需要在動畫器中創建一個新狀態,然後將動畫片段添加到此狀態,然後在播放狀態時播放動畫。 (就像我現在玩的狀態,它的工作,但我需要添加動畫剪輯/一個狀態,所以我可以玩它)。 –
是的,就是這樣。 「動畫師控制器」包含的國家(可能)包含一個「動畫片段」(或更多,如果該州是一個混合樹)。 – Galandil
非常感謝你。 –