Unity2D游戏停止碰撞检测

萌新向

查到一个前辈使用的方法是
rigidbody.isKinematic = true;
//this.transform.GetComponent<Rigidbody2D>().isKinematic = true

让需要的人更容易搜到,就想写下来。(每次我找这样的信息就需要太久时间,不知道姿势哪里不对)。

<不重要的题外话>
前几天写完npc的行为,尝试放了50个。FPS就变得非常低了。
盲人摸象一般。。。重写了行为,突然变得好起来了。
之前NPC所有的行为都用Update 进行判断,对于性能耗损方面一无所知。
后来改成用InvokeRepeating判断,然后那些一次性需要生成大量资源的,改成用协程,就会好太多了!

后来在碰撞设定上面又难倒我了。。。
如果一万个NPC都加上碰撞箱,跟刚体。那滋味难以想象。

一开始的想法是让碰撞体Active = false,进入摄像机之后再Active = true;//或者直接移除碰撞箱跟刚体,进入摄像机之后再加入这些组件。

然后进行了一些折腾。。遇到一些难题,比如如何输出一个Sprite。
输出一个碰撞箱,可以通过射线,鼠标点击处,等方法。
通过什么办法能get到场景中的一个Sprite ?如果不能get到这个Sprite 就不能给它添加 碰撞箱组件。

然后再测试了让NPC的刚体进行睡眠。。。测试之后,发现只要有碰撞,刚体就会被唤醒。

最后就搜到了这个办法。。之前我以为它是用于重力系统。。差点就错过了。
这样碰撞箱被保留,又不会差生碰撞计算。如果需要进行碰撞,随时让该刚体isKinematic = false;
真的是很好的方式!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值