ue3dUnity如何检测碰撞对象

Unity如何检测碰撞对象

分类:
ue3d - Unity如何检测碰撞对象

在本文中,3D天堂将解释如何检测Unity中不同游戏对象之间的3D碰撞,会使用Collision类来检测游戏对象之间的碰撞。

下面是准备的一个简单场景(将使用键盘输入移动玩家对象并检查它与其他对象的碰撞),有俩个立方体(Player和Enemy)和一个地面(Ground)模型,如下所示

ue3d - Unity如何检测碰撞对象

Unity检测碰撞的步骤

第1步

触发碰撞检测的游戏对象应该具有刚体碰撞体组件,对于此演示,会​​将刚体组件附加到玩家游戏对象,Box collider已经可用于原始立方体对象。

玩家对象
玩家对象

确保未选中Is Kinematic复选框。

第2步

Collider组件附加到其他游戏对象,将Box Collider添加到地面和敌人游戏对象(另外一个立方体),刚体组件是可选的,确保未选中Is Trigger复选框

敌人对象
敌人对象

第3步

将以下脚本附加到Player游戏对象。

using UnityEngine;
using UnityEngine.UI;

public class CollisionBehavior : MonoBehaviour
{
    public Text LogCollsiionEnter;
    public Text LogCollisionStay;
    public Text LogCollisionExit;

    private void OnCollisionEnter(Collision collision)
    {
        LogCollsiionEnter.text = "On Collision Enter: " + collision.collider.name;
    }

    private void OnCollisionStay(Collision collision)
    {
        LogCollisionStay.text = "On Collision stay: " + collision.collider.name;
    }

    private void OnCollisionExit(Collision collision)
    {
        LogCollisionExit.text = "On Collision exit: " + collision.collider.name;
    }
}

到这里设置就已完成,运行测试一下游戏就可以看到当第一个立方体碰撞到模拟敌人的立方体时,将会推动敌人往后移动,结果如下

ue3d - Unity如何检测碰撞对象

与特定图层对象碰撞

还可以检测特定对象集的碰撞,可以使用图层,对于此示例进行以下更改:

  1. 创建三个不同的图层,Ground(地面)、Player(播放)和Enemy(敌人),将这些层应用于相应的游戏对象。
  2. 打开物理设置,目标为编辑菜单 → 项目设置 → 物理。
  3. 物理设置中有层碰撞矩阵,可以检查哪个层将与其他层交互。

下面是有关图层蒙版的简单了解,可以前往站内参阅

图层碰撞矩阵
图层碰撞矩阵

通过以上设置,Player图层对象不会与Enemy图层对象发生碰撞。

以上是3D天堂关于在Unity中检测对象碰撞的全部内容,如果你有任何反馈,请随时在本页面下方留言。

相关信息

  • 类型:知识
  • 字数:414
  • 字符:1933
  • 适用软件:Unity
  • 说明:无
  • 编号:156676

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!