Unity 2D检测物体碰撞

添加物理脚本

Unity2D中,检测物体碰撞首相要给物体添加两个属性分别是:
rigibody和collider,刚体和碰撞器。
collider有不同的形状,形状越复杂,开销越大。
collider上可以勾选is Trigger选项,如果勾选,Unity的物理引擎就不会启动,反之物理引擎会启动,如果碰撞会有力的作用,导致物体位移。

使用脚本检测碰撞

如果勾选is Trigger选项,就需要使用OnTriggerEnter函数进行检测。
反之使用OnCollisionEnter函数进行检测。

	private void OnCollisionEnter(Collision collision)
	{
        print(collision.gameObject.name);
	}
 	private void OnCollisionExit(Collision collision)
	{
        print(collision.gameObject.name);
    }
    //触发检测  没有物理效果
	private void OnTriggerEnter(Collider other)
	{
        print(other.gameObject.name);
	}
### Unity2D 物体碰撞检测方法 在Unity2D环境中,为了实现物体之间的碰撞检测,需确保待测对象具备`Rigidbody2D`和`Collider2D`组件。前者赋予游戏物件物理特性,后者定义其外形轮廓用于交互判定[^1]。 对于希望响应传统意义上的撞击事件而非触发器行为的对象而言,在发生接触时能够依据预设逻辑作出反应——比如反弹、停止等动作;而这一切的基础在于正确配置上述提到的两个核心要素,并且不启用`isTrigger`标志位以便让内置物理模拟机制生效。 当一切准备就绪后,开发者可以通过继承自MonoBehaviour类的方法来捕捉并处理这些瞬间: - `OnCollisionEnter2D(Collision2D)`:每当新一次碰触开始时调用; - `OnCollisionStay2D(Collision2D)` :只要持续保持接触状态期间不断重复执行; - `OnCollisionExit2D(Collision2D)` : 当两物分离之际被激活。 下面给出一段简单的C#脚本实例,展示了如何利用`OnCollisionEnter2D()`函数监听特定名称的游戏实体间的相遇情况: ```csharp void OnCollisionEnter2D(Collision2D collision){ if (collision.gameObject.name == "zhong_dot"){ Debug.Log("开始碰撞"); } } ``` 这段代码会在名为"zhong_dot"的目标进入当前角色的影响范围之内时打印日志消息到控制台窗口中去[^2]。 另外一种常见的应用场景涉及到地面探测功能的设计思路,则可能涉及射线投射技术的应用。通过向下方发射不可见光线并与场景内其他元素相交测试的方式确认玩家是否处于站立姿态之上。这通常配合着Gizmo工具辅助开发人员直观感受算法运作原理的同时也便于调试工作开展: ```csharp private void OnDrawGizmos(){ Gizmos.DrawLine( groundCheck.position, new Vector3(groundCheck.position.x, groundCheck.position.y - groundCheckDistance) ); } void Update(){ isGrounded = Physics2D.Raycast( groundCheck.position, Vector2.down, groundCheckDistance, whatIsGround ); } ``` 此段落中的`Physics2D.Raycast(...)`负责实际执行从指定起点沿垂直方向向下延伸一定长度距离内的障碍物扫描操作,并返回布尔类型的查询结果供后续业务流程判断使用[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值