Unity实用功能之给人物骨骼自动添加碰撞

2,007 阅读3分钟

这是我参与8月更文挑战的第26天,活动详情查看:8月更文挑战

概述

在日常开发中,我们经常会使用到人物碰撞,有的时候不要求精准度,直接在人物身上添加一个CapsuleCollider就完事了,这样做虽然省事但是会有非常多的弊端,比如说当人物做动作的时候可能胳膊,等地方就没有碰撞了,或者说当人物弯腰的时候,碰撞还是以人站立的姿势呈现的,这对游戏体验非常不好。那么就需要精细的为人物每个节点添加碰撞,有的人这时候可能就会在人物骨骼上一个节点一个节点的进行AddComment。这种方法是非常慢的,那么本片文章就主要讲解下,如何快速的添加碰撞

功能实现

这也是我偶然间找到的一个插件,是在GitHub上找到的。最下面会有下载地址。本篇文章就主要讲解下如何使用。 设置角色碰撞器的工具主要使用的是通过 Humanoid Character 来获取 Avatar 骨骼定义。从而达到给骨骼添加碰撞的目的。支持Unity的Normal ColliderFake LineSphere“Collider”
首先来看一下如何打开自动添加骨骼界面。我们将插件导入到Unity中之后会看到菜单栏中多了一项FTP_Tools选项

image.png 点开发现有两个选项

  • FTP - AutoWrapHumanBodyColliders:给人物自动添加碰撞
  • FTP - ColliderTools:人物碰撞设置(添加好碰撞之后才可以操作) image.png

FTP - AutoWrapHumanBodyColliders

首选来看下AutoWrapHumanBodyColliders自动添加碰撞
打开界面如下,感觉什么都没有,这是因为还没有绑定要添加碰撞的人物 image.png Wrap Collider Mode:添加碰撞的模式。
我们将人物放到Target一栏中,就会显示如下界面

image.png 此时我们点击Mapping Bone With Human Avatar,就可以自动识别人物骨骼

image.pngMapping Bone With Human Avatar上方有一个小的复选框,勾上,就会在Scene中显示各个点击名称

image.png 接下来点击Auto Create Collider By Setting,就可以通过右侧的设置添加碰撞,如果有的人看不见这按钮,把窗口放大,窗口默认有点小,这个是在窗口下面的。个人习惯先添加碰撞在调碰撞,这样可以实时看到碰撞大小及位置。添加好碰撞的人物如下

image.png 此时我们在点击右侧,开始设置碰撞的位置等信息

image.png

  • OverLap:碰撞的高度
  • WidthFactor:碰撞的粗细(半径)
  • offsetX:x轴偏移量,调节位置
  • offsetY:轴偏移量,调节位置
  • offsetZ:z轴偏移量,调节位置 具体操作如下

展示18.gif

设置好每一项参数就可以实现碰撞的自动添加。

FTP - ColliderTools

接下来看一下FTP - ColliderTools都有什么功能,打开可以看到如下界面

image.png 主要功能就两个:

  • Copy Collider:复制碰撞
    1. Source:碰撞体来源,就是已经添加好碰撞到人物
    2. Destination:还没有添加彭碰撞,要复制的人物
  • Clear Collider:清除碰撞 这两个功能也非常的好,也为我们节省了很多的时间。

源代码分享

GitHub地址1(本人整理地址):点击这里跳转下载
此地址中包括项目源代码和unitypackage包,想要下载哪个都可以,没有任何多余的资源,Demo中的人物是官方商店免费的人物,可以自行下载(Adventure Character

GitHub地址2(原地址):点击这里跳转下载

写在最后

所有分享的内容均为作者在日常开发过程中使用过的各种小功能点,分享出来也变相的回顾一下,如有写的不好的地方还请多多指教。欢迎大家相互学习进步。本片文章就先写到这里,希望对你能够有所帮助