查看: 1987|回复: 2
打印 上一主题 下一主题

[其他] 关于碰撞面检测方法(转载)

[复制链接]

711

主题

10

听众

5805

积分

高级设计师

Rank: 6Rank: 6

纳金币
2954
精华
3

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-4-30 03:13:18 |只看该作者 |倒序浏览
unity3d制作2D游戏中我们熟知的碰撞检测应该是碰撞点的检测 collision,那么我们如果要实现一个多边形的碰撞面检测要如何实现呢,
一:最笨的办法就是在脚本里取范围区间来判断面的碰撞,
二:可以给物体的每个面添加一个子物体来判断碰撞对象,如果是不规则的多边形这样做是很麻烦的,
三:我现在所使用的是用碰撞点的法线来判断所碰撞的面,用一个正方体来举例,首先拿到碰撞点的法线对象
  1. public void OnCollisionEnter(Collision collision)
  2.         {
  3.             foreach (ContactPoint contact in collision.contacts)
  4.             {
  5.                     contact.normal;
  6.             }
  7.         }
复制代码
然后判断 取到的normal对象的值 他是Vector3类型的对象  x值表示左右的法线角度正方体是 1和-1; y、z分别表示上下 和前后法线的值.
那么我的判断是:
  1. if(contact.normal.x=1)
  2. {
  3.       print("碰到右边");
  4. }
  5. if(contact.normal.y=1)
  6. {
  7.       print("碰到上边");
  8. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-4-30 05:07:36 |只看该作者
Thank you for this share!
回复

使用道具 举报

xx232    

17

主题

8

听众

3499

积分

中级设计师

Rank: 5Rank: 5

纳金币
865
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-4-30 19:57:23 |只看该作者
基础啊  基础
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-3 02:22 , Processed in 0.083948 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部