如何给动态的人物添加碰撞体

    • 前景提要
  • 解决方法
    • 步骤
      • 步骤1
      • 步骤2
      • 步骤3
      • 步骤4
      • 步骤5
    • 顺便奉上检测3d物体的方法

前景提要

如题,项目中想实现和人物进行简单的互动,比如点击他的手臂的时候他会播放手臂的动作,点击脚的时候播放预设的和脚有关的动画

之前我的实现方式是十分暴力的在人物模型中对应的部位添加一个子物体,给子物体添加正方体/圆体这种规则的碰撞体,然后因为他是在骨骼下的,所以人物在动的时候这个碰撞体也会跟着一起动,比绑在静态的mesh上灵活很多,不至于点击不相关的部位的时候也被静态的mesh检测到然后播放不相符的动画

但是这么有很大的局限性,第一就是不精准,因为是规则的碰撞体,所以检测的范围就大了很多,第二就是有的时候不同部位之间的碰撞体会出现交叉的情况,也会影响,最后就是这个实现方法太nc了,当时是真的想不到其他的办法

不过现在隔了1年多,在重新回来看的时候,发现了一个比较简单高效而且检测质量最高的办法
这是在网上随便找的模型

解决方法

在骨骼的子节点添加一个空对象,然后给他挂载mesh collider组件,把这个骨骼对应的mesh找到,然后拖到mesh collider的mesh上,然后微调一下距离(我这里使用的时候碰撞体会比模型向前多了很多,向后拉一下,和肉眼上看到的一致即可)

步骤

步骤1

给你需要的骨骼节点添加一个子节点

步骤2

给子节点添加mesh collider组件

步骤3

把骨骼对应的mesh找到,然后拖到步骤2创建的组件中的mesh

步骤4

然后运行的时候你会发现这个碰撞体比模型前了很多

移动一下这个子节点到覆盖到骨骼对应的mesh的位置即可
编译器:能调,运行的时候也能调,不过相对麻烦一点
Game场景:如下图,一个小方法,在你微调的时候暂停一下Game场景,然后慢慢调,调完记得复制一下这个子节点的位置,停止Game场景后复制到这个子节点上

步骤5

mesh collider组件上有一个canves的toggle,可以勾选上,勾选上后面片的数量明显少了很多,无疑能降低一点性能

其他的部位只要照猫画虎就可以啦~
不得不说,这个方法光是看着就舒服不知道多少倍,

顺便奉上检测3d物体的方法

两个需要注意的
第一是你的主相机的layer要选上main camera
第二是主相机上要有PhysicsRaycaster组件
缺一不可~

     PointerEventData pointerEventData = new PointerEventData(EventSystem.current);pointerEventData.position = Input.mousePosition;PhysicsRaycaster pr = Camera.main.GetComponent<PhysicsRaycaster>();List<RaycastResult> results = new List<RaycastResult>();pr.Raycast(pointerEventData, results);

这个results就是检测到的结果,输出一下即可

2d的物体检测只要把上面的PhysicsRaycaster组件改成GraphicRaycaster即可

【unity学习笔记-如何给动态的人物添加碰撞体】相关推荐

  1. 【Unity学习笔记】b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别)

    [Unity学习笔记]b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别) 自己跟着学完了,写了不少代码,会放在CSDN代码库,因为老师并没有提供源码,录屏也不是完全连续,所以难 ...

  2. 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

    [Unity学习笔记][Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲+记录了部分价讲解和我自己的理解的代码存在这 原 ...

  3. unity学习笔记-特效篇

    unity学习笔记 传送门特效 火焰特效 传送门特效 由于动画师的动画制作遇到了一些小问题,只能先做其他功能的摸索了~ 本来想记录一下服务器搭建的,但是在消息传输的部分遇到了一些bug,可能是消息解析 ...

  4. unity学习笔记-text文本识别html富文本(待改进)

    unity学习笔记 text文本识别html富文本(待改进) 需求 逻辑 实现 xlua的安装 配置到unity 使用 改进优化(待改进) text文本识别html富文本(待改进) 需求 项目里需要将 ...

  5. unity学习笔记-番外(3d模型的动作设计以及导入-2018版)材质的替换以及动作穿模(自己的手穿模到自己的其他部位)

    unity学习笔记-番外(3d模型的动作设计以及导入) 动作设计白嫖方法 方法一:小k网 需要注意的地方 方法二:mixamo 需要注意的地方 材质的替换 一 动作的穿模 2021.5.13更新 -2 ...

  6. Unity学习笔记(4)-----粒子效果的实现

    Unity学习笔记(4)-–粒子效果的实现 一.效果展示 下面用若干张张动图展示效果: 大概就是这样,并不是很难. 实际效果要比图中的好一点(顺畅得多). 实现步骤 大致可以分为如下几个步骤,然后逐个 ...

  7. Unity学习笔记1 简易2D横版RPG游戏制作(一)

    这个教程是参考一个YouTube上面的教程做的,原作者的教程做得比较简单,我先参考着做一遍,毕竟我也只是个初学者,还没办法完全自制哈哈.不过我之前也看过一个2D平台游戏的系列教程了,以后会整合起来,做 ...

  8. Unity学习笔记:个人学习项目《疯狂天才埃德加》纠错文档

    Unity学习笔记:个人学习项目<疯狂天才埃德加>纠错文档 本文档是完成学校Unity课程作业时建立的纠错文档.用于记录自己开发过程中遇到的各种问题,以便下次遇到相同的问题时及时找到解决方 ...

  9. Unity学习笔记:Unity 3D 飞机大战

    Unity学习笔记:Unity 3D 飞机大战 1.打开unity软件后,首先新建Quad作为背景,导入飞机模型,并为其添加刚体 然后创建C#脚本,挂载到飞机上. 2.给飞机创建子弹,让子弹成为预制体 ...

最新文章

  1. vins 解读_代码解读 | VINS 视觉前端
  2. 数据列过滤条件常用处理
  3. weblogic启动方法
  4. JAVA 中的数据结构
  5. MySql 5.7.19 源代码安装 for ubuntu 16.04
  6. P2转P3'dict' object has no attribute 'has_key'
  7. spring-boot-2.0.3应用篇 - shiro集成
  8. 【机器学习】径向基(RBF)神经网络的tensorflow实现
  9. 线性代数 : 矩阵消元
  10. 用idea创建vue项目
  11. qq空间显示手机型号android,qq空间如何设置显示手机型号
  12. python廖老师课程资源,廖老师的python教程
  13. 计算机应用基础在线作业3,《计算机应用基础》15春在线作业3
  14. 科大奥瑞物理实验——声速的测量
  15. python网络爬虫案例_Python网络爬虫案例实战
  16. 多普勒流量计需要什么安装条件与建议?
  17. 转型在线教育,这4个问题不容忽视!
  18. 收藏!撰写 SCI 论文时好用的软件技巧总结
  19. css三列布局--两边固定中间自适应和中间固定两边自适应
  20. 电脑安装USB写入保护功能杜绝U盘传染病毒

热门文章

  1. 川土微 数字隔离器 CA-IS3722HS可替代ADUM1201ARZ
  2. cad注释比例和打印比例不一样_cad注释比例(cad注释比例与打印比例)
  3. win10 悬浮日历_Win10日历隐藏功能:可直接打印空白月历
  4. Canvas 绘制方法过一遍
  5. 计算机网络启动慢,关于电脑网络连接启动的特别慢的解决方法
  6. 10.JAVA中的集合(数据结构)
  7. cad图文档管理系统,图文档查找困难解决方法
  8. 类中成员方法和实例方法
  9. 取消SVN感叹号即去除版本库
  10. 斗地主(按照顺序给玩家发牌)