标签:技术 htm 常用 nbsp 交互 unit 投影 图片 不同类
git地址:https://gitee.com/Hont/ColliderDemo
大致逻辑说一下,首先每一种碰撞器需要一套质点到该碰撞器相应边缘点的函数,后续不同类型的碰撞器都是基于这套接口实现的。
对于特殊的碰撞器也可以不实现这个接口,只在特殊场合使用这些特殊碰撞。
那么实现这套接口需要一些求交点函数,代码里都实现了,包括球体还有柱形的求交点函数都来源于网络,所以性能这方便差一些。
球体求交点直接从圆形的交点获取扩展:https://www.cnblogs.com/hont/p/8991751.html
平面求交点:http://www.cnblogs.com/hont/p/7467618.html
当求边缘点的函数有了之后,就可以进行具体形状的碰撞检测了,例如胶囊可以拆分为上下两个球的碰撞和中间的柱形碰撞。
直接求出其他常规类型碰撞器的边缘点之后再拿边缘点和胶囊做一次包含关系检测即可。当然中间的柱形要做一次投影。
上面的说法不包括一些凸包凹包的非常规碰撞,其他两种碰撞直接通过边缘点做检测即可。
另外相交点做了一个保留处理,即不在相交状态,或者变为包含状态时依旧可以获取得到旧的相交点。并且这里的相交点并不是准确接触点
但可以通过扩展计算更精确的接触点,所以能看见gif图中接触点在包含时有一些不准确的跳动。毕竟游戏中很多接触产生的特效位置是按照关节来的。
配合射线可以和unity自身碰撞器有良好的交互。
总之还不太完善,在实际项目中再去不断优化。
三种常用碰撞类型的实现(Box,Sphere,CapsuleCollider)及接触点获取
标签:技术 htm 常用 nbsp 交互 unit 投影 图片 不同类
原文地址:https://www.cnblogs.com/hont/p/9381358.html