Collider(碰撞体)和Trigger(触发器)测试

本文通过四个测试案例详细解析了Unity中Collider与Trigger的区别。当两个物体均为Collider时,仅触发Collision事件;若其中一个为Trigger,则仅触发Trigger事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试对象:Cube1和Cube2

情况1:
Cube1是Collider,Cube2时Collider
Collision事件触发,Trigger事件不触发

情况2:
Cube1是Collider,Cube2时Trigger
Collision事件不触发,Trigger事件触发

情况3:
Cube1是Trigger,Cube2时Collider
Collision事件不触发,Trigger事件触发

情况4:
Cube1是Trigger,Cube2时Trigger
Collision事件不触发,Trigger事件触发

总结:
当两个物体都是Collider时,才会触发Collision事件,并且不会触发Trigger事件。
两个物体中只要有一个是Trigger时,另一个无论是Collider还是Trigger,都只会触发Trigger事件。

测试代码:

using UnityEngine;
using System.Collections;

public class ColliderTest : MonoBehaviour {

    void OnCollisionEnter(Collision collisionInfo)
    {
        Debug.Log("Collision" + collisionInfo.gameObject.name);
    }
    void OnTriggerEnter(Collider other)
    {
        Debug.Log("Trigger" + other.gameObject.name);
    }
}
Unity 3D中,要在触发器组件上获取碰撞到的物名称,你可以按照以下步骤操作: 1. **创建设置**: - 首先,在你的场景中添加一个Rigidbody(刚)组件给需要检测的物,并启用Is Trigger属性,将其转变为触发器。 - 然后在该物上添加一个Collider碰撞),通常选择Box Collider、Sphere Collider或其他适合的形式。 2. **编写脚本**: - 创建一个新的C#脚本并挂载到游戏对象上,这个脚本会监听碰撞事件。例如,创建名为`TriggerScript.cs`的脚本: ```csharp using UnityEngine; using System.Collections; public class TriggerScript : MonoBehaviour { public string collisionNameField; // 在Inspector面板上显示碰撞名称的字段 void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Collidable")) // 检查是否碰撞到了"Collidable"标签的物 { collisionNameField = other.gameObject.name; // 获取其他对象的名称并赋值给字段 Debug.Log("Collision with: " + other.gameObject.name); // 打印碰撞信息 } } } ``` 3. **配置脚本**: - 在Unity编辑中,找到包含触发器的游戏对象,然后将`TriggerScript`脚本添加上去。 - 在Inspector窗口里,找到`collisionNameField`字段,并设置其数据类型为`Text`(如果尚未设置的话),以便在编辑中看到碰撞的名称。 4. **触发检测**: - 当有满足条件的物进入触发器范围时,脚本会执行`OnTriggerEnter`函数,获取并显示碰撞的名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值