UnityAPI学习之碰撞检测与触发检测

碰撞检测

发生碰撞检测的前提:

  1. 碰撞的物体需要有Rigidbody组件和boxcllidder组件

  2. 被碰撞的物体需要有boxcollider组件

示例1:被碰撞的物体拥有Rigidbody组件

两个物体会因为都具有刚体的组件而发生力的作用,如下图所示,当被碰撞的物体被碰撞时,两物体的刚体组件(Rigidbody组件)发生力的作用,从而达到gris(3)推着gris(1)向左移动的效果

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NO18_Collider : MonoBehaviour
{
    public float speed;
    private void Update()
    {
        transform.Translate(Vector2.left * speed * Time.deltaTime,Space.World);
    }
    private void OnCollisionEnter2D(Collision2D collision)
    {
        print("碰撞的物体为" + collision.gameObject.name);
    }

}

示例2:被碰撞的物体没有Rigidbody组件

被碰撞的物体没有刚体组件(Rigidbody组件),因此gris(3)不会推着gris(1)向左移动

触发检测

发生触发检测的前提:

  1. 碰撞的物体需要有Rigidbody组件和boxcllidder组件

  2. 被碰撞的物体需要有boxcollider组件并勾选IsTrigger选项

示例:

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NO18_Collider : MonoBehaviour
{
    public float speed;
    private void Update()
    {
        transform.Translate(Vector2.left * speed * Time.deltaTime,Space.World);
    }
    private void OnCollisionEnter2D(Collision2D collision)
    {
        print("碰撞的物体为" + collision.gameObject.name);
    }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        print(collision.gameObject.name + "进入了");
    }
    private void OnTriggerStay2D(Collider2D collision)
    {
        print(collision.gameObject.name + "停留");
    }
    private void OnTriggerExit2D(Collider2D collision)
    {
        print(collision.gameObject.name + "走出了");
    }
}
相关推荐
cpp_w16 分钟前
C#基础3- 面向对象中级应用3
后端·c#
wangguanghou133 分钟前
【学习成长】深入解析721学习成长模型:70-20-10法则的实践指南与避坑手册
学习
其实防守也摸鱼44 分钟前
Linux文本处理命令理论学习
linux·服务器·前端·数据库·sql·学习·安全
dadaobusi1 小时前
学习: Triton
学习
一条泥憨鱼1 小时前
【计算机网络】| 从 MAC 到 NAT 的跨网段通信全链路
服务器·网络·学习·计算机网络·macos
miao_0v01 小时前
10.20任务
学习·个人开发
步步为营DotNet1 小时前
Async 状态机要搬进运行时了:.NET 10 Runtime Async 实测,快的地方快 1.5 倍,贵的地方贵 5 倍
性能优化·c#·.net·async·runtime
Generalzy1 小时前
Qt 桌面开发入门:PySide6 学习路线、架构原理与技术选型
笔记·python·学习
hixiong1232 小时前
C# 使用 ZXingCpp.Angle 进行条码、二维码识别
开发语言·c#·扫码
步步为营DotNet2 小时前
System.Text.Json 源生成:三个“看起来已经生效“的静默失效
c#·.net·native aot·源生成