Handle Root Motion by Script(利用程式码叠加root motion)

本文介绍了如何通过Unity的OnAnimatorMove()方法来处理Root Motion,以解决第三段攻击未向前移动的问题。通过在ActorController组件下挂载RootMotionControl脚本,可以实现第三段攻击向前移动的效果。
摘要由CSDN通过智能技术生成

第三段攻击没有向前移动
unity API:unity onanimatormove():会在整个状态机算完一次呼叫一次,有什么不满意可以在它里面修改。在ybot下面挂rootmotioncontrol:

public class RootMotionControl : MonoBehaviour
{
    private Animator anim;

    void Awake()
    {
        anim = GetComponent<Animator>();
    }



    void OnAnimatorMove()
    {
        SendMessageUpwards("OnUpdateRM", (object)anim.deltaPosition);//发给爸爸级 然后再actorcontroller里面进行控制
    }

}

ActorController:

 private Vector3 deltaPos;//记载的是要移动多远


private void FixedUpdate() //undata是每秒60帧,达到和显示屏一样的刷新速度 而fixedupdata(物理引擎) 每秒50帧
    {
        rigid.position += deltaPos;//移动多元
        //rigid.position += planarVec * Time.fixedDeltaTime;//增加一段距离()每秒1个单位  速度乘时间来改位移
        rigid.velocity = new Vector3(planarVec.x, rigid.velocity.y, planarVec.z) + thrustVec;//直接指派速度 + 一个跳跃向量 然后清零跳跃向量
        thrustVec = Vector3.zero;
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值