unity animator BlendTree1

好想骂人啊,终于解决了

问题

我使用blendtree让角色进行跑,向左转,向右转,跳跃的的功能,但角色其他动画播放正常,只要转向就在原地不动了

原因:动画播放完了就不动了,设置下loop属性就行了。

使用blendtree

1 动画如果只在原地运动,可以给动画添加运动曲线,(curves,在animation视窗中)然后给忽角色添加运动代码

OnAnimatorMove函数中
    void OnAnimatorMove()
    {
        Animator animator = GetComponent<Animator>();
        if (animator)
        {
            Vector3 newposition = transform.position;
            newposition.z += animator.GetFloat("run") * Time.deltaTime;
            transform.position = newposition;
        }
    }

2 创建控制器controller,给控制器添加动画,添加blendtree,如果想控制动画运动可以给controller添加变量通过condition条件控制角色运动 

添加代码

public class blendTree1 : MonoBehaviour {
    Animator animator1;
    public float speed1 = 0.08f;
	// Use this for initialization
	void Start () {
        animator1 = GetComponent<Animator>();
	}

	// Update is called once per frame
	void Update () {
        if (animator1)
        {
            AnimatorStateInfo statInfo = animator1.GetCurrentAnimatorStateInfo(0);
            if (statInfo.IsName("Base Layer.Run"))
            {
                if (Input.GetKey(KeyCode.A))
                {
                    animator1.SetBool("jump", true);
                }
            }
            else
            {
                animator1.SetBool("jump", false);
            }

            float horizontal = Input.GetAxis("Horizontal");

            animator1.SetFloat("speed", horizontal, speed1, Time.deltaTime);
        }
	}
}

  

 

时间: 2024-11-12 21:08:45

unity animator BlendTree1的相关文章

Unity animator:StateMachineBehaviour的一点应用(施工中)

Unity animator:StateMachineBehaviour的一点应用(施工中) 有什么用 直奔主题,我们先讲讲作用,用法,再慢慢解释 一个简单的应用场景:Unity动画状态机中有一个"特色"是,如果你为一组Animator添加一个triggerA的parameter,用于控制动画A的播放(这里我们举例triggerA触发一次,进入动画A播放一次),你会发现,快速出发两次或多次triggerA,不加入限制条件,动画A将再播放完后再播放一次或多次 已有的解决方案是在脚本中添加

Unity Animator动画状态机 深入理解(一)

接触Unity以来就已经有了Animator,Animation用的少,不过也大概理解他俩之间的一个区别于联系. 图中其实就是Animator和Animation之间的区别于联系了,啊!你肯定会告诉我这就不是Animator么. 对啊,Animator其实是由Animation组成的.比如在Animator没有出现的时候有些公司写的动画状态机其实就是代码版的Animator. Animator其实就是把Animation统一管理和逻辑状态管理的组件,而Animation就是每一个动画. 动画状态

unity, animator stateMachine立即触发状态转换

例如按下键jump按钮人物执行跳起动作,同时动画状态由idle转换为jump,同时打开Game窗口和Animator窗口对比观察,发现人物跳起时动画状态并没有同步发生转换,而是有一定延迟,导致人物动画与动作脱节.后来发现是由于Transition(idle->jump)面板中勾选了Has Exit Time造成的,把此勾去掉就同步了. 关于Has Exit Time参考:http://docs.unity3d.com/Manual/class-Transition.html

Unity Animator动画状态机 深入理解(二)IK控制

IK还是一个很神奇和实用的东西啊,起码可以用代码来控制人物骨骼位置还是很爽的.因为不是动画师~ 这篇可能跟Animator没啥关系了哈,都是代码层的. 看了一官方的案例,老的,有些问题,自己修改了一下,达到了效果. 官方建议把所有的IK操作放在OnAnimatorIK中进行. 如果我们要进行IK操作,先要绑定IK位置.IK能控制的官方都给了enum   然后我们要设置权重Weight,范围为0~1,这里都设成1 1 avatar.SetIKPositionWeight(AvatarIKGoal.

Unity-Animator学习系列总索引

花了不少时间完成了这篇Unity Animator学习系列文章,其中API部分很多都是亲测.希望能对路过的博友有所帮助 相关参考文档 Unity Animator官方组件文档 Unity Animator官方脚本文档 圣典的部分汉化文档 Animator学习系列总目录 1.Unity-Animator学习系列---API 2.Unity-Animator学习系列---控制IK 3.Unity-Animator学习系列---剪辑播放后位置预判(Animator.Target) 4.Unity-An

Unity 编辑器下控制播放Animator

在Unity编辑器的Scene视图进行控制播放Animator,可以借助方法StartPlayback.StopPlayback.StartRecording和StopRecording,具体可以参照以下例子: 创建一个带Controller的Animator对象,可以看到此时人物呈现T型姿势.附上新脚本EditAnimator,此为空脚本,如下: C# Code 1 2 3 4 5 6 using UnityEngine; public class EditAnimator : MonoBeh

unity 对Animator动画系统的研究

unity的新动画系统叫Mecanim,使用Animator来取代旧系统Animation,按Unity文档的惯例:知识点主要分2部分:unity manual和unity script,读者可以边看文章边查阅文档,最好能动手测试. 文章的开始之前,先讲几个基本的知识的: 1.创建动画的一个基本步骤是设置一个unity3d可理解的简化后的骨骼到骨架中实际骨骼的映射:在Mecanim的术语中,这个映射称为Avatar,即avatar是骨骼到骨架的映射. (图片来自网) Avatar主要用于类人骨骼

Unity 动画系统 Animation 和 Animator的小实例

本文结合一个很简单的动画demo,分别采用2种方法,来对比Animation和Animator的使用方式: 方法1:单独使用Animation 方法2:Animation结合Animator 动画Demo 两个动画.一个是移动,一个是缩放. 实现方式的对比 一.单独Animation来实现 空场景,找到一张Sprite图片,拖到面板中,右键添加Animation组件.如下: 点中这张pig猪的图片,点击Unity的 Window->Animation->Animation.出现如下: 这个时候

关于Unity中的Animator使用animator.Play()不能重复播放同一个Animatoin的解决方案

使用如下代码,连续按两次T,动画只会播放一次: public Animator currentAnimator; void Update() {    if(Input.GetKeyDown(KeyCode.T))    {        currentAnimator.Play("attack_1");    } } 如果想要可以两次,使用如下代码: public Animator currentAnimator; void Update(){    if(Input.GetKeyD