- 最后登录
- 2016-10-1
- 注册时间
- 2013-12-28
- 阅读权限
- 90
- 积分
- 5805
- 纳金币
- 2954
- 精华
- 3
|
unity3d制作2D游戏中我们熟知的碰撞检测应该是碰撞点的检测 collision,那么我们如果要实现一个多边形的碰撞面检测要如何实现呢,
一:最笨的办法就是在脚本里取范围区间来判断面的碰撞,
二:可以给物体的每个面添加一个子物体来判断碰撞对象,如果是不规则的多边形这样做是很麻烦的,
三:我现在所使用的是用碰撞点的法线来判断所碰撞的面,用一个正方体来举例,首先拿到碰撞点的法线对象- public void OnCollisionEnter(Collision collision)
- {
- foreach (ContactPoint contact in collision.contacts)
- {
- contact.normal;
- }
- }
复制代码 然后判断 取到的normal对象的值 他是Vector3类型的对象 x值表示左右的法线角度正方体是 1和-1; y、z分别表示上下 和前后法线的值.
那么我的判断是:- if(contact.normal.x=1)
- {
- print("碰到右边");
- }
- if(contact.normal.y=1)
- {
- print("碰到上边");
- }
复制代码 |
|