在 unity 里面要想实现碰撞,需要满足两个条件。

  1. 两个物体都具有碰撞组件。
  2. 运动的组件拥有刚体。

对于第一条:碰撞组件有很多, 针对不同的形状有不同的Collider 。其中 Box Collider 是六个面针对的是立方体等,如果不算2d 的 Collider,Box Collider 的面数是最少的,下面还有Capsule Collider 胶囊体,Sphere Collider 球体的。其中针对不规则的物体可以使用 Mesh Collider,比如说坦克,石头等。

如何在程序里检测到碰撞,Unity 已经给了相应的方法。
当两个碰撞的物体,其中一个勾选上 Is Trigger 时,会触发:OnTriggerEnter、OnTriggerStay、OnTriggerExit
当不勾选Is Trigger 时,会触发:OnCollisionEnter、OnCollisionStay、OnCollisionExit。

看上面的英语,字面意思就是, Enter碰撞开始,Stay 碰撞保持,Exit 碰撞结束。

每个方法都有一个参数Collider other,这个代表与它发生碰撞的另外一个物体。

  private void OnTriggerEnter(Collider other){Debug.Log("OnTriggerEnter:::"+other.transform.name);}

下面写了个例子:,可以把这个方法拖拽到其中一个物体上可以查看效果。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TrigerAndColler : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}private void OnTriggerEnter(Collider other){Debug.Log("OnTriggerEnter:::"+other.transform.name);
//        Destroy(other.gameObject);}private void OnTriggerStay(Collider other){Debug.Log("OnTriggerStay");}private void OnTriggerExit(Collider other){Debug.Log("OnTriggerExit");}private void OnCollisionEnter(Collision other){
//        Destroy(other.gameObject);other.transform.GetComponent<MeshRenderer>().material.color = new Color(Random.value,Random.value,Random.value);Debug.Log("OnCollisionEnter");}private void OnCollisionStay(Collision other){Debug.Log("OnCollisionStay");}private void OnCollisionExit(Collision other){Debug.Log("OnCollisionExit");}// Update is called once per framevoid Update(){}
}

Unity 十三 碰撞条件相关推荐

  1. python学习[第十三篇] 条件和循环

    python学习[第十三篇] 条件和循环 if语句 单一if 语句 if语句有三个部分构成,关键字if本身,判断结果真假的条件表达式,以及表达式为真或非0是执行的代码 if expression: e ...

  2. Unity物体碰撞出现穿插问题/穿过问题/物体穿过场景模型

    (由于问题不好描述,所以标题就比较长了) 之前在做游戏时,发生角色与其他模型始终不能正常碰撞,总是会穿插,即角色穿过其他模型.其中角色有刚体和碰撞器组件,其他模型"有"碰撞器. 事 ...

  3. Unity车轮碰撞器起步刹车太慢

    Unity车轮碰撞器起步刹车太慢 遇到的问题 尝试的办法 刹车慢 起步慢 遇到的问题 在学校学习<物理引擎>专业课的时候,我们的期末作业是用unity的WheelCollider组件来对汽 ...

  4. 关于Unity粒子系统碰撞的几个坑

    关于Unity粒子系统碰撞的几个坑 最近公司的项目正好要用到粒子系统的碰撞,所以特意研究了一下.在实践中遇到了很多问题,所以借此文记录一下学习的过程.而且学习过程中发现网上这方面文章极少,所以也算借这 ...

  5. Unity 车轮碰撞器的入门使用(二)

    Unity 车轮碰撞器的入门使用(二) 这节来分析一下车轮碰撞器里面的参数:如图 Mass:车轮的质量大小 Radius:车轮的半径大小 Wheel Damping Rate:车轮的阻尼值大小,必须要 ...

  6. Unity自动化碰撞体生成方法-Normal Collider 和 碰撞体代理

    如何在Unity中对角色快速创建碰撞体(Normal Collider)和碰撞体代理(Fake Collider) 前言 快速给Humanoid人形角色添加碰撞体,使用Unity 的Collider系 ...

  7. Unity中OnTriggerEnter条件以及isTrigger的一个问题

    该函数触发的条件: 1.两个物体都必须有碰撞器(Collider)组件: 2.其中一个物体的碰撞器(Collider)的IsTrigger属性必须勾上: 3.最重要的一点,其中一个物体必须有刚体(Ri ...

  8. unity 射线 碰撞 连线烘焙

    点击选中物体 方法1:OnMouseDown()只针对脚本挂载的物体有效 首先,要给 物体加上 碰撞器Collider 然后在物体脚本上加入 void OnMouseDown()//只针对脚本挂载的物 ...

  9. unity物理碰撞操作方案

    经unity官方网站资料改写整理书写本博客,原网址方案链接如下: Lesson 2.4 - Collision Decisions - Unity Learn 首先  1.先创建两个物体 然后   2 ...

最新文章

  1. 【计算几何】多边形交集
  2. python自动化运维平台能用php开发吗_关于数据库自动化运维平台的设计及开发实现思路...
  3. 如何正确清理C盘中DriverStore文件夹中文件?
  4. 人工智能,人脸识别门禁下的校园考勤
  5. AI理论知识整理(2)-对称矩阵-特征值与特征向量
  6. 自动开料机器人_工业4.0智能家具无人化生产线 自动化无人化大势所趋
  7. Android学习----AndroidManifest.xml文件解析
  8. java lambdamart库,LambdaMART 之 lambda(示例代码)
  9. r语言模型评估:_情感分析评估:对自然语言处理的过去和未来的反思
  10. Java中的责任链模式
  11. Python CheckiO 题解系列 丨 博客目录索引
  12. 查找nginx安装的路径
  13. 网络不稳定的原因_原来网络不稳定,也有可能是这个原因造成的!
  14. 简单学习Infopath
  15. nodeJS笔记参考菜鸟教程
  16. 阿里云虚拟主机Nginx配置
  17. Code Contracts - Precondition Failed
  18. 不同主体的微信小程序相互跳转
  19. 【夏令营QA】2021年中国人民大学信息学院 | 高瓴人工智能学院夏令营经验分享帖
  20. R时间序列模型之贝叶斯预测

热门文章

  1. 看似一样实则天差地别的SQL条件(自记录)
  2. PDF杂谈一 PDF对象流
  3. 车联网发展现状学习笔记
  4. 使用C++写的中国象棋(单机版)
  5. 自动驾驶入门技术(7)—— 多传感器信息融合(MSIF)
  6. 汇川IS620N伺服使能和点动测试
  7. 计算机常用英语词汇表(硬件类)
  8. 去大连计算机学校考试能停车么,学校周边取消所有临时停车位
  9. OAI搭建——EPC的搭建
  10. 京东商城颁布退还两周内iPad一代购置差价