【Unity3D】如何使碰撞仅对特定物体有效

Unity 开发游戏时,我们希望 player 碰撞体是可以被墙壁遮挡,可以被敌人碰到消灭,但是多个 player 之间又是可以相互穿过,敌人之间也是可以互相穿过。所以问题来了,我们如何是碰撞仅对特定的物体有效?

解决方法

重点在于 PhysicsLayer 的使用。

吃豆人游戏

以《史上最难的游戏》的游戏为例,在游戏中,红色的主角有多个,由多人控制。主角可以与 墙壁 产生碰撞效果而被遮挡,也可以与蓝色的 敌人 产生碰撞效果而被消灭,但是多个 主角 之间可以叠加穿过而不产生碰撞。

1. 设置游戏物体 Layer

为了实现这种效果,首先我们要设置玩家对象、敌人的 Layer ,如 Player 和 Enemy 。
(在 Inspector 面板 Layer 中设置 ,如果没有,自行新建 Layer)

2. 设置 Physics 碰撞矩阵

找到菜单栏 Edit -> Project Setting -> Physics 并打开。

Physics Setting

我们展开 Layer Collision Matrix 部分,可以看到一个矩阵,这个矩阵描述了哪些 Layer 可以跟哪些 Layer 发生碰撞。如图,我们将不希望发生碰撞的 Layer 在矩阵中勾选取消即可。

Collision Matrix

参考资料

【1】https://jingyan.baidu.com/article/48b558e30d18947f38c09a2e.html

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机灵鹤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值