【Unity入门】24.碰撞检测

article/2025/11/11 7:23:26

【Unity入门】碰撞检测

    大家好,我是Lampard~~

    欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 

 

(一)碰撞体

(1)Collider组件

    上节课我们有学习到,unity的物理系统提供了更方便的碰撞检测机制,就是提供各种的Collider组件去检测碰撞需求

Unity 中有以下几种 Collider 组件:

1. Box Collider(盒子碰撞器):一个基于矩形的碰撞体,用于模拟长方体或立方体物体的碰撞。

2. Sphere Collider(球形碰撞器):一个基于球形的碰撞体,用于模拟球体物体的碰撞。

3. Capsule Collider(胶囊碰撞器):一个基于胶囊形状的碰撞体,用于模拟某些具有胶囊形状的物体的碰撞,比如人物角色。

4. Mesh Collider(网格碰撞器):一个基于游戏对象模型的碰撞体,用于模拟复杂的几何形状的物体的碰撞,比如地形、建筑等。

5. Terrain Collider(地形碰撞器):一个基于 Unity 地形的碰撞体,用于模拟地形的碰撞。

6. Wheel Collider(车轮碰撞器):一个专门针对车辆的碰撞体,用于模拟车辆的轮子与地面的碰撞。

7. Character Controller(角色控制器):一个专门为人物角色设计的碰撞体,用于模拟人物角色的移动和碰撞。

    我们就给篮球加上了球形的 Sphere Collider给草地加上了盒子立方体形的Box Collider,因此篮球和草地之间就可以检测到碰撞

(2)编辑碰撞体

    此时若我突发奇想,如果我想给篮球加一个矩形的碰撞体,不用球形的行不行呢?

    试试看就知道了, 我们发现,选用矩形的碰撞体组件同样会生成一个包裹住篮球的碰撞体结构(绿框),只不过它的样子是矩形罢了

    运行起来也是没有问题的,所以用哪一个碰撞体组件真的就没那么严格限制:

    在创建的时候,unity的物理引擎会自动计算出物体的大小,从而生成合适的碰撞体组件。那比如我们需要篮球在空中还有一定距离时就停下(监听到碰撞),如何调整这个组件大小呢? 

    很简单,选中collider组件,里面有一个Edit Collider选项点击之后我们就可以在场景编译器中调整碰撞体组件的大小了

    比如把组件调的那么大,就可以在绿框和草地接触的那一刻停下 

 

(二)碰撞体检测

(1)Kinematic运动学刚体

    刚体我们知道是物理学中研究的一个物体对象概念,那运动学刚体是什么呢

运动学刚体不受物理引擎的计算和影响,而是由开发者手动控制它的运动。运动学刚体可以设置为运动、旋转或缩放,但不会受到重力、碰撞等物理效果的影响。运动学刚体通常用于模拟精确的动画或特效效果,或者用于实现一些特定的游戏机制

    选中Rigidbody组件,里面有一个可以选择Is Kinematic的参数,选中就可以让它成为一个运动学刚体

(2)isTrigger触发器

    第二步需要设置碰撞体为触发器

isTrigger 是 Collider(碰撞体)组件中的一个属性,用于指定碰撞体是否为触发器。

当一个碰撞体的 isTrigger 属性被设置为 true 时,该碰撞体就不会影响游戏对象的物理运动,也不会产生碰撞效果,而只是用于检测游戏对象是否进入了该碰撞体的范围内。当游戏对象进入触发器时,就会触发 OnTriggerXXX 系列函数(比如 OnTriggerEnter、OnTriggerStay、OnTriggerExit)

    只需要选中Collider组件,勾线IsTrigger参数就可以了

    做完这两部后,我们就可以通过OnTriggerXXX 系列函数在脚本中检测碰撞的发生

    我们可以给篮球加一个脚本试试看效果:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class BasketballLogic : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){float DisPreSec = 6f;this.transform.Translate(0, -DisPreSec * Time.deltaTime, 0);}void OnTriggerEnter(){Debug.Log("发生了碰撞");}
}

    看看输出,在碰撞的一霎那确实就打印出来了:

 

好啦今天就到这里,谢谢各位感谢阅读!!!
点赞,关注!!!


http://chatgpt.dhexx.cn/article/f1YZFad8.shtml

相关文章

Unity3D教程:简单的碰撞检测

需求:当立方体Cube碰到地面Plane的时候,输出碰撞物体的名称,则表述检测到立方体碰撞了地面。 1.搭建一个简单的场景。 在新的工程中选择File->new Scene创建新的场景。然后在该场景中添加地板:GameObject->Create Other-&…

Unity学习笔记(二) 碰撞检测与触发检测

正好看到了Roll a ball这个游戏,于是就温故一下碰撞检测和触发检测 1.前期准备 中间省去建造一些基础的物体的过程,最后呈现如下图 我们的主角就是中间的球体 其GameObject名为player,我们在其身上添上刚体组件(Rigidbody)使其可以进行物理移动 …

Python实战——过采样数据的处理之改进的SMOTE算法

文章目录 1 理论2 实现3 补充3.1 原理介绍3.1.1 欠采样与过采样3.1.2 Tomek Link 法欠采样3.1.3 Random Over Sampling 随机过采样3.1.4 SMOTE 过采样3.1.5 综合采样 3.2 Python实战3.2.1 数据探索3.2.2 不同的抽样方法对训练集进行处理3.2.2.1 拆分自变量与因变量3.2.2.2 抽样…

机器学习中非平衡数据的处理 —— smote算法

目录:SMOTE算法 1、不平衡数据的背景知识2、SMOTE算法的理论思想3、SMOTE模块的使用 1、不平衡数据的背景知识 在实际应用中,分类问题中类别的因变量可能存在严重的偏倚,即类别之间的比例严重失调,如欺诈问题,欺诈类观…

Python:SMOTE算法

17.11.28更新一下:最近把这个算法集成到了数据预处理的python工程代码中了,不想看原理想直接用的,有简易版的python开发:特征工程代码模版 ,进入页面后ctrlF搜smote就行,请自取 之前一直没有用过python&…

探索SMOTE算法

摘要 SMOTE是一种综合采样人工合成数据算法,用于解决数据类别不平衡问题(Imbalanced class problem),以Over-sampling少数类和Under-sampling多数类结合的方式来合成数据。本文将以Nitesh V. Chawla(2002)的论文为蓝本&#xff0…

不均衡数据集采样1——SMOTE算法(过采样)

SMOTE: Synthetic Minority Over-sampling Technique 论文地址:https://www.jair.org/index.php/jair/article/download/10302/24590 SMOTE的算法思路是: 使用K近邻,在附近(最少选附近5个点)随便找一个同一类别的点,然…

数据不平衡问题——SMOTE算法赏析

春节前后好久没有总结问题了,这一段时间一直在做NLP的文本分类(二分类)问题,遇到了各种问题 。分别如下: 1、数据打标问题。运营人手不够可把兄弟们累坏了,是我给兄弟们分的任务,别打我嘿嘿。 …

SMOTE算法代码实现

类别不平衡问题 类别不平衡问题,顾名思义,即数据集中存在某一类样本,其数量远多于或远少于其他类样本,从而导致一些机器学习模型失效的问题。例如逻辑回归即不适合处理类别不平衡问题,例如逻辑回归在欺诈检测问题中&a…

有关不平衡学习与SMOTE算法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言因为最近的任务中运用到了Smote算法,但是我找了网上好多帖子都没有解决问题,因此去阅读了imblearn库的User guide。然后在这边写下所得到…

Borderline-SMOTE算法介绍及Python实现【内附源代码】

💖作者简介:大家好,我是车神哥,府学路18号的车神🥇 ⚡About—>车神:从寝室到实验室最快3分钟,最慢3分半(那半分钟其实是等红绿灯) 📝个人主页:…

SMOTE算法原理及Python代码实现

SMOTE算法原理及Python代码实现 文章目录 SMOTE算法原理及Python代码实现预备知识SMOTE算法内容的简单复习SMOTE算法的详细分析创建类对象和初始化构建训练函数构建合成样本函数 SMOTE算法的完整代码示例代码 预备知识 向量代数的知识:对于点 x 1 \mathbf{x}_1 x1​…

smote算法_海量样本无从下手?这五种抽样算法分分钟搞定

全文共 1854字,预计学习时长 4分钟 数据科学是研究算法的学科。本文介绍了一些常见的用于处理数据的抽样技术。 图片来源:unsplash.com/gndclouds 简单随机抽样 假设要从一个群体中选出一个集合,该集合中的每个成员选中的概率相等。 下列代码…

smote算法_探索SMOTE算法

SMOTE是一种综合采样人工合成数据算法,用于解决数据类别不平衡问题(Imbalanced class problem),以Over-sampling少数类和Under-sampling多数类结合的方式来合成数据。本文将以 Nitesh V. Chawla(2002) 的论文为蓝本,阐述SMOTE的核心思想以及实现其朴素算法,在传统分类器(贝…

[12]机器学习_smote算法

1、smote原理介绍 在两个点连线中间取点 2、smote算法实现 import random from sklearn.neighbors import NearestNeighbors import numpy as np import matplotlib.pyplot as pltclass Smote(object):def __init__(self, N50, k5, r2):# 初始化self.N, self.k, self.r, sel…

过采样:SMOTE算法

前言:在比赛中遇到关于样本不均衡问题,特地过来补补知识点! 1、smote原理 过采样的技术有非常多,最常见的就是随机过采样和SMOTE过采样。 随机过采样就是从少的类中进行随机进行采样然后拼接上去,这种效果很多时候和加权差不大。还有一种较…

SMOTE算法

SMOTE算法的思想是合成新的少数类样本,合成的策略是对每个少数类样本a,从它的最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本。 如图所示: 算法流程: 1、对于少数类中每一个样本a&…

SMOTE算法及其python实现

SMOTE(Synthetic Minority Oversampling Technique),合成少数类过采样技术.它是基于随机过采样算法的一种改进方案,由于随机过采样采取简单复制样本的策略来增加少数类样本,这样容易产生模型过拟合的问题&a…

SMOTE算法(人工合成数据)

SMOTE全称是Synthetic Minority Oversampling Technique即合成少数类过采样技术,它是基于随机过采样算法的一种改进方案,由于随机过采样采取简单复制样本的策略来增加少数类样本,这样容易产生模型过拟合的问题,即使得模型学习到的…

SMOTE算法原理 易用手搓小白版 数据集扩充 python

前言 为啥要写这个呢,在做课题的时候想着扩充一下数据集,尝试过这个过采样降采样,交叉采样,我还研究了一周的对抗生成网络,对抗生成网络暂时还解决不了我要生成的信号模式崩塌的问题,然后就看着尝试一下别…