温故而知新
记录一下BlendTree的简单使用和说明,这里只针对二维动画的使用
先添加一个动画控制器,添加一个空的动画名字叫Run:
然后右键点击Run,添加一个BlendTree:
右键添加的BlendTree添加动画,赋值:
设置BlendType,我这里就是设置的笛卡尔坐标控制,动画只受自身坐标值影响,设置Parameters的参数名字。并且在控制器添加这两个Float参数:
这两个参数dir和speed分别对应Motion的Posx和PosY,设置PosX和PosY的值,对两个参数的值进行控制达到设置的PosX或者PosY的值就会进入对应的动画。从上面设置我们可以读取到RunLeft动画需要(PosX)dir的值达到-1,Run的动画需要(PosY)speed达1,那么Idle动画需要PosX和PosY不变。
下面写一段代码控制dir和speed的值,并且在运行状态下手动修改PosX和PosY进行观察:
using UnityEngine;
public class Test : MonoBehaviour
{
private void Update()
{
BlendTreeTest();
}
public void BlendTreeTest()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
AnimatorStateInfo info = anim.GetCurrentAnimatorStateInfo(0);
if (info.shortNameHash == Animator.StringToHash("Run"))
{
anim.SetFloat("dir", h, 0.1f, Time.deltaTime);
anim.SetFloat("speed", v, 0.1f, Time.deltaTime);
}
}
}
WS控制前进跑步和后退,AD控制左右转向,停止按键进入待机动画,看看效果:
基本就是这样的,以后接触更复杂的在补充
欢迎加群:4364930讨论。