碰撞检测——碰撞检测函数

简介: 碰撞检测——碰撞检测函数

物理碰撞检测相应的函数我们将通过print函数来举例说明:

在VS code中,我们可以通过输入OnCollisionEnter,然后按Tab键来补全该函数结构,其他的函数也相同。

private void OnCollisionEnter(Collision collision) {
}

如果我们想要碰撞触发接触时会自动执行的函数:

private void OnCollisionEnter(Collision collision) {
}

如果我们想要碰撞结束分离时会自动执行的函数:

private void OnCollisionExit(Collision collision) {
}

如果我们想要两个物体相互接触摩擦时会不停的调用的函数(这里要注意的是相对运动摩擦时会调用,只是静止接触可能并不会调用):

private void OnCollisionStay(Collision collision){
}


触发器检测响应函数

值得一提的是,该函数在使用时,需要将碰撞器的is Trigger选项勾选。

如果我们想要触发开始的函数,当第一次接触时会自动调用:

private void OnTriggerEnter(Collider other){
}

如果我们想要触发结束的函数,当水乳交融的状态结束时,会调用一次:

private void OnTriggerExit(Collider other) {
}

如果我们想要当两个对象一直接触触发时,在水乳交融的时候会不停调用:

private void OnTriggerStay(Collider other) {
}

我们在使用函数的时候,要明确什么时候会响应函数

1.只要挂载的物体能和别的物体产生碰撞或触发,那么对应的函数就能够被响应。

2.每个函数应当根据需求进行书写。

3.如果是一个组合物体,刚体父对象上没有碰撞器,但其子物体上有碰撞器的时候,在子物体上添加相关的脚本函数不会被触发,对其父对象添加脚本才会被触发。

4.要明确物理碰撞和触发器响应的区别。

我们一般会把想要重写的,碰撞和触发的函数都写成保护类型的,没有必要写成public类型,因为我们不会去自己手动调用,而是Unity通过反射帮助我们自动调用。


碰撞和触发器函数都可以写成虚函数在子类中被重写

举个例子:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson16 : MonoBehaviour
{
    //注意:访问修饰符需要写成 protected,没必要写成public,因为不需要自己手动调用
    protected virtual void OnTriggerEnter(Collider other)
    {
        print(this.name + "被" + other.gameObject.name + "触发了");
    }
}


目录
相关文章
|
7月前
|
算法 JavaScript 前端开发
在JavaScript中实现基本的碰撞检测算法,我们通常会用到矩形碰撞检测,也就是AABB(Axis-Aligned Bounding Box)碰撞检测
【6月更文挑战第16天】JavaScript中的基本碰撞检测涉及AABB(轴对齐边界框)方法,常用于2D游戏。`Rectangle`类定义了矩形的属性,并包含一个`collidesWith`方法,通过比较边界来检测碰撞。若两矩形无重叠部分,四个条件(关于边界相对位置)均需满足。此基础算法适用于简单场景,复杂情况可能需采用更高级的检测技术或物理引擎库。
117 6
|
6月前
|
前端开发 JavaScript
canvas系列教程06 ——边界检测、碰撞检测
canvas系列教程06 ——边界检测、碰撞检测
62 2
|
算法 图形学
矩形范围碰撞检测
矩形范围碰撞检测
|
JavaScript 前端开发 算法
3D 碰撞检测
文介绍了用于在 3D 环境中实现碰撞检测的不同边界体积技术。
205 0
|
JavaScript 算法
使用 THREE.js 进行边界体积碰撞检测
本文介绍如何使用 Three.js 库在边界框和球体之间实现冲突检测。假设在阅读本文之前,您已经先阅读了我们的 3D 碰撞检测介绍性文章,并了解了 Three.js 的基本知识。
286 0
|
图形学
unity基础-坦克炮管旋转发射炮弹(向量基础,射线碰撞,物体实例化)
unity基础-坦克炮管旋转发射炮弹(向量基础,射线碰撞,物体实例化)
429 0
|
算法
碰撞检测——GJK算法
碰撞检测——GJK算法
818 0
碰撞检测——GJK算法
|
图形学
碰撞检测——刚体
碰撞检测——刚体
148 0
碰撞检测——刚体
自由运动滑块和小球的碰撞检测
自由运动滑块和小球的碰撞检测
127 0
自由运动滑块和小球的碰撞检测
|
图形学
碰撞检测——刚体加力
碰撞检测——刚体加力
109 0