引言
最近做的Rpg游戏中,我用的NavMeshAgent来控制角色的移动,当我的角色移动到敌人面前的时候,它会攻击我(我设置的攻击状态的时候NavMeshAgent的destination是敌人自己的posion,以至于敌人不会选取其他位置为目标点),此时我移动到它攻击距离的另外一个位置,此时问题出现了(后方统一将敌人初始攻击的旋转方向为位置一,玩家移动之后的旋转方向为位置二)
分析
由于我设置敌人在攻击我的时候,它的Transform是要LookAt玩家的,所以此时敌人的旋转方向为位置二,此时NavMeshAgent的destination并没有被改变,所以NavMeshAgent的destination旋转方向还是位置一的旋转方向,所以可能会造成如下的情况:
解决办法
查找Unity官方文档,发现NavMeshAgent有一个变量:updateRotation,自动旋转。
解释:该值为布尔型变量,如果为true,那么会由NavMeshAgent来控制游戏对象的旋转,反之则让我们玩家控制游戏物体的旋转。
在我攻击的时候,我可以把updateRotation设置为false,当他为其他状态的时候,比如我跑开了敌人的攻击范围,此时敌人应该来追我,那么这个时候就应该把updateRotation设置为true,不然它会直接平移过来追你(想想都可怕emm)。
扩展
类似的还有updatePosition和updateUpAxis。
用处
当我们需要自己控制游戏物体的旋转的时候,我们应该把NavMeshAgent的updateRotation设置为false,当需要它为我们自动设置的时候再改为true就行了。
|