Unity 十三 碰撞条件
在 unity 里面要想实现碰撞,需要满足两个条件。
- 两个物体都具有碰撞组件。
- 运动的组件拥有刚体。
对于第一条:碰撞组件有很多, 针对不同的形状有不同的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 十三 碰撞条件相关推荐
- python学习[第十三篇] 条件和循环
python学习[第十三篇] 条件和循环 if语句 单一if 语句 if语句有三个部分构成,关键字if本身,判断结果真假的条件表达式,以及表达式为真或非0是执行的代码 if expression: e ...
- Unity物体碰撞出现穿插问题/穿过问题/物体穿过场景模型
(由于问题不好描述,所以标题就比较长了) 之前在做游戏时,发生角色与其他模型始终不能正常碰撞,总是会穿插,即角色穿过其他模型.其中角色有刚体和碰撞器组件,其他模型"有"碰撞器. 事 ...
- Unity车轮碰撞器起步刹车太慢
Unity车轮碰撞器起步刹车太慢 遇到的问题 尝试的办法 刹车慢 起步慢 遇到的问题 在学校学习<物理引擎>专业课的时候,我们的期末作业是用unity的WheelCollider组件来对汽 ...
- 关于Unity粒子系统碰撞的几个坑
关于Unity粒子系统碰撞的几个坑 最近公司的项目正好要用到粒子系统的碰撞,所以特意研究了一下.在实践中遇到了很多问题,所以借此文记录一下学习的过程.而且学习过程中发现网上这方面文章极少,所以也算借这 ...
- Unity 车轮碰撞器的入门使用(二)
Unity 车轮碰撞器的入门使用(二) 这节来分析一下车轮碰撞器里面的参数:如图 Mass:车轮的质量大小 Radius:车轮的半径大小 Wheel Damping Rate:车轮的阻尼值大小,必须要 ...
- Unity自动化碰撞体生成方法-Normal Collider 和 碰撞体代理
如何在Unity中对角色快速创建碰撞体(Normal Collider)和碰撞体代理(Fake Collider) 前言 快速给Humanoid人形角色添加碰撞体,使用Unity 的Collider系 ...
- Unity中OnTriggerEnter条件以及isTrigger的一个问题
该函数触发的条件: 1.两个物体都必须有碰撞器(Collider)组件: 2.其中一个物体的碰撞器(Collider)的IsTrigger属性必须勾上: 3.最重要的一点,其中一个物体必须有刚体(Ri ...
- unity 射线 碰撞 连线烘焙
点击选中物体 方法1:OnMouseDown()只针对脚本挂载的物体有效 首先,要给 物体加上 碰撞器Collider 然后在物体脚本上加入 void OnMouseDown()//只针对脚本挂载的物 ...
- unity物理碰撞操作方案
经unity官方网站资料改写整理书写本博客,原网址方案链接如下: Lesson 2.4 - Collision Decisions - Unity Learn 首先 1.先创建两个物体 然后 2 ...
最新文章
- 【计算几何】多边形交集
- python自动化运维平台能用php开发吗_关于数据库自动化运维平台的设计及开发实现思路...
- 如何正确清理C盘中DriverStore文件夹中文件?
- 人工智能,人脸识别门禁下的校园考勤
- AI理论知识整理(2)-对称矩阵-特征值与特征向量
- 自动开料机器人_工业4.0智能家具无人化生产线 自动化无人化大势所趋
- Android学习----AndroidManifest.xml文件解析
- java lambdamart库,LambdaMART 之 lambda(示例代码)
- r语言模型评估:_情感分析评估:对自然语言处理的过去和未来的反思
- Java中的责任链模式
- Python CheckiO 题解系列 丨 博客目录索引
- 查找nginx安装的路径
- 网络不稳定的原因_原来网络不稳定,也有可能是这个原因造成的!
- 简单学习Infopath
- nodeJS笔记参考菜鸟教程
- 阿里云虚拟主机Nginx配置
- Code Contracts - Precondition Failed
- 不同主体的微信小程序相互跳转
- 【夏令营QA】2021年中国人民大学信息学院 | 高瓴人工智能学院夏令营经验分享帖
- R时间序列模型之贝叶斯预测