Unity学习笔记 NavMeshAgent.velocity设置速度 不生效问题

本文介绍了在Unity中遇到的问题,即当角色静止时NavMeshAgent的速度无法赋值。通过深入分析发现是AutoBraking功能的影响。解决方案是禁用AutoBraking以实现对静止角色的击退效果。

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

这里我想通过直接设置agent的速度来模拟击退效果,结果发现当人物处于静止状态时,agent的速度赋值不上的问题。但是当人物处于移动状态时,却能正常赋值。

解决方法:禁用Auto Braking即可。

    public void KickOff()
    {
        if (!AttackTarget) { return; }

        transform.LookAt(AttackTarget.transform);
        // 计算击退方向
        var kickDirection = (AttackTarget.transform.position - transform.position).normalized;
        print("kickDirection"+kickDirection);
        print("kickDirection * kickForce"+kickDirection * kickForce);
        
        // 打断移动
        AttackTarget.GetComponent<NavMeshAgent>().isStopped = true;
        
        // 击退
        AttackTarget.GetComponent<NavMeshAgent>().velocity = kickDirection * kickForce;
        print("velocity"+AttackTarget.GetComponent<NavMeshAgent>().velocity+"\n----------------------");
        AttackTarget.GetComponent<Animator>().SetTrigger("Dizzy");
    }

人物静止时被攻击控制台输出结果如下,前两个都是对的,但是agent的速度却为o。
在这里插入图片描述
但是当人物处于移动状态时,却能正常赋值。一开始怀疑是isStopped的问题。但是注释掉或者改为false后还是存在这个问题。然后分析了一通才发现是Auto Braking的锅。

解决方法:禁用Auto Braking即可。

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值