Unity基本组件—Collider_总都督的博客-程序员信息网_collider unity

技术标签: Unity基础知识  unity3d  

组件介绍

1.盒碰撞器(Box Collider)

在这里插入图片描述
1.Edit Colloder:手动编辑Collider
2.Is Trigger:是否为触发器
3.Material:材质
4.Center:碰撞器的中心点,相对于物体的自身坐标
5.Size:碰撞器的大小

2.椭圆碰撞器(Sphere Collider)

在这里插入图片描述
1.Edit Colloder:手动编辑Collider
2.Is Trigger:是否为触发器
3.Material:材质
4.Center:碰撞器的中心点,相对于物体的自身坐标
5.Radius:碰撞器的半径大小

3.胶囊碰撞器(Capsule Collider)

在这里插入图片描述
1.Edit Colloder:手动编辑Collider
2.Is Trigger:是否为触发器
3.Material:材质
4.Center:碰撞器的中心点,相对于物体的自身坐标
5.Radius:碰撞器的半径大小
6.Height:圆柱体高度
7.Direction:方向

4.网格碰撞器(Mesh Collider)

在这里插入图片描述
1.Convex:凸面体,勾选后物体的碰撞体凹凸不平的地方都将被填平
2.Is Trigger:是否为触发器
3.Cooking Options烘焙选项
4.Material:材质
5.Mesh:选择网格

碰撞器和触发器

首先,要想实现物体间的碰撞效果则需要一个必要条件:一刚二碰
两个要进行碰撞的物体必须都具备碰撞体,且至少有一个物体带有钢体才可进行碰撞检测,同样,触发器作为碰撞器的一个开关(只需要把Is Trigger选项勾选即可变为触发器),也需具备如上条件才可进行触发检测。

属性

名称 作用
attachedRigidbody 碰撞器附加的刚体
bounds 碰撞器在世界坐标空间的边界框
contactOffset 当他们的collider相差为多少距离的时候开始检测碰撞(触发器修改这个值无效)
enabled bool型,启用碰撞器将会碰撞其他碰撞器,禁用碰撞器就不会碰撞其他碰撞器
isTrigger 是否开启触发器
material 材质
sharedMaterial 共享材质

方法

名称 方法
OnCollisionEnter(Collision collision) 碰撞开始⼀瞬间时调⽤⼀次
OnCollisionExit(Collision collision) 碰撞分离⼀瞬间时调⽤
OnCollisionStay(Collision collision) 碰撞过程中相对运动时持续调⽤,每帧⼀次
OnTriggerEnter(Collider other) 进⼊触发器的时候调⽤⼀次
OnTriggerExit(Collider other) 退出触发器的时候调⽤⼀次
OnTriggerStay(Collider other) 处于某个触发器之中的时候持续调⽤,每帧⼀次
ClosestPoint(Vector3 position) 返回对撞机上最接近给定位置的点
ClosestPointOnBounds(Vector3 position) 到附加碰撞器的边界框最近的点

射线检测

Collider.Raycast(Ray ray, out RaycastHit hitInfo, float maxDistance)
ray 射线的起点和方向。
hitInfo 如果返回true,hitInfo则将包含有关撞到碰撞器的位置的更多信息
maxDistance 射线的最大长度。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    
    public Collider coll;
    void Start() {
    
        coll = GetComponent<Collider>();
    }
    void Update() {
    
        if (Input.GetMouseButtonDown(0)) {
    
            //ScreenPointToRay将屏幕上的⼀个点转换成射线
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (coll.Raycast(ray, out hit, 100.0F))
                transform.position = ray.GetPoint(100.0F);
            
        }
    }
}

Ray射线

属性

名称 作用
direction 射线的方向
origin 射线的起点

方法

Ray.GetPoint(float distance); 返回distance沿射线单位的点

RaycastHit

属性

名称 作用
barycentricCoordinate 所碰到的三角形的重心坐标
collider 碰到的碰撞器,如果什么也没有碰到,此属性为null
distance 从射线的原点到撞击点的距离
lightmapCoord 光照图坐标
normal 射线所碰到的表面的法线
point 在世界空间中,射线碰到碰撞器的碰撞点
rigidbody 射线碰到碰撞器的刚体,如果什么也没有碰到,此属性为null
textureCoord 在碰撞点的UV纹理坐标
textureCoord2 碰撞点的第二个UV纹理坐标
transform 碰到的刚体或碰撞器的变换
triangleIndex 三角形索引

方法

Physics.Raycast(Vector3 origin, Vector3 direction, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);
origin 射线在世界坐标中的起点。
direction 射线的方向。
maxDistance 射线应检查碰撞的最大距离。
layerMask 一种图层蒙版,用于在投射射线时有选择地忽略“碰撞器”。
queryTriggerInteraction 指定此查询是否应命中触发器。

Physics.Raycast 发射物理射线,返回⼀个碰撞检测对象RaycastHitbool值

——————————————————————————————————————
——————————————————————————————————————

Physics.RaycastAll(Ray ray, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);
ray 射线的起点和方向
maxDistance 射线应检查碰撞的最大距离.
layerMask 一种图层蒙版,用于在投射射线时有选择地忽略“碰撞器”
queryTriggerInteraction 指定此查询是否应命中触发器.

RaycastHit [] HitAll = Physics.RaycastAll;发射物理射线,返回所有碰撞检测对象

——————————————————————————————————————
——————————————————————————————————————

Physics.Linecast(Vector3 start, Vector3 end, int layerMask = DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);
start 起点
end 终点
layerMask 一种图层蒙版,用于在投射射线时有选择地忽略“碰撞器”
queryTriggerInteraction 指定此查询是否应命中触发器

Physics.Linecast 从开始位置到结束位置做一个光线投射,如果与碰撞体交互,返回真

QueryTriggerInteraction

属性

名称 作用
UseGlobal 查询使用全局Physics.queriesHitTriggers设置
Ignore 查询从不报告触发器命中
Collide 查询总是报告触发器命中
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44098711/article/details/105958086

智能推荐

问题解决: Pandas: KeyError: […] not in index_createmodel的博客-程序员信息网_not in index

报错代码:df_trainset=df[['time','temp','hum','cooling']]报错说index里没有这些(主要df也是拼接来的,如果是文件读出的表是可以这么取数据的。)猜测跟pandas内部有关系,索引的地址不一样。于是试了一下这个解决方案:df=df.copy()df_trainset=df[['time','temp','hum','cooling']]果然就可以了。(我可真棒啊~)附另一版解决方案:因为这几个特征列在原表里是不连续的,而且数量不多,所以采

微信小程序周报(第十二期)-极乐小程序商店出品_APPx应用魔方的博客-程序员信息网

重要:极乐商店域名变更:wxapp.dreawer.com/变更为store.dreawer.com/每周一笑 对于各种凌乱的电脑问题,手机问题,其他行业的人,以为程序员们,什么都会,程序员中,女程序员以为男程序员,什么都会,男程序员中,一般程序员以为技术好的程序员,什么都会,技术好的程序员,每次都在网上苦苦找答案。。。微信小程序官方更新微信支付开放数据能力 商户随时手机管“生意” 2017

Elsevier投稿latex模板问题汇总及解决_feynman233的博客-程序员信息网_elsevier latex 通讯作者

1. 通讯作者标星问题使用elsarticle模板,会出现通讯作者标星后,后面全部作者也跟着都标了星。解决方案:在\begin{document}之前插入以下代码。注意正确的缩进,否则会报错!\makeatletter\def\@author#1{\[email protected]@macro\elsauthors{\normalsize% \def\baselinestretch{1}% \upshape\authorsep#1\unskip\textsuperscript{% \i

使用Sublime Text 3 或 EditPlus 配置 编写 8086汇编语言_WangMeow的博客-程序员信息网_sublime text3 汇编

前言:大二下学期上了贺老师进行翻转课堂的《汇编语言》,目前进行到第4–5章。 按贺老师的建议,在日常编写汇编语言的过程中,采用编辑器编写。——以下是两种编辑器,配置编写8086汇编的教程:一、Sublime Text 3 —– 被众多编程爱好者称赞的编辑器(1.)下载地址:https://www.sublimetext.com/3 根据自己的OS下载选择合适的版本 (...

dba mysql_DBA与MySQL简介_EditSprings论文润色的博客-程序员信息网

1、MySQL-DBA工作职责开发DBA运维DBA初级安装、搭建中级数据库管理员、用户权限、索引管理、存储引擎、备份恢复、主从、故障处理高级性能优化、集群高可用2、MySQL学习框架MySQL简介及安装(必会)MySQL体系结构和基础管理(熟悉)MySQL-SQL语句(熟悉)MySQL基础优化-索引及执行计划(必会)MySQL存储引擎(熟悉)MySQL日志管理(必会)MySQL备份恢复(必会)My...

php+openssl_encrypt+AES-128-ECB_m0_37678007的博客-程序员信息网

php使用openssl_encrypt中的AES-128-ECB加密解密$key = ‘[email protected]’; //可随便写/** * @param string $string 需要加密的字符串 * @param string $key 密钥 * @return string */function encrypt($string, $key){ // openssl_encrypt 加密不同Mcrypt,对秘钥长度要求,超出16加密结果不变 $data = ope

随便推点

成均科技_面试_cx19900910的博客-程序员信息网

成均科技:XmlHttpRequest    浏览器对象 [负责javascript--&amp;gt;程序通讯 jsp;servlet]1:创建对象.var xmlHttpReq = new ActiveXObject(&quot;MSXML2.XMLHTTP.3.0&quot;); ie ActionXObject(); ff ie 8 ie 9  XmlHttpRequest()  ...

数字的秘密_Flaygo的博客-程序员信息网

Description在数字王国中,人人都有一个号码,人人都想知道这个号码对自己意味着什么。国王便做了很多个盒子,每个盒子拥有一个号码。人们需要通过一定的方法才能确定哪个盒子有自己的秘密。这个办法就是把自己的数字N的全部因子相加求和。例如12,他因子之和就是1+2+3+4+6=16。现在他们邀请你帮助编写一个函数,寻找他们的密码盒子。Input输入数据的第一行是一个数字T(1 <= T

需求分析,产品经理的必备技能_野生产品经理Danny的博客-程序员信息网

在上一篇文章中,给大家讲了什么是需求采集以及需求采集的常用方法需求采集,看这一篇就够了需求采集之后,我们下一步要做的就是需求分析了,那么,什么是需求分析呢?需求分析,是从用户需求出发,挖掘用户内心真正的目标,并转化为产品需求,提炼成符合产品定位的解决方案的过程。背景分析首先,我们要知道我们的需求背景什么,为什么要做这个需求。用户分析其次,我们要知道我们的需求是为谁做的,...

linux 查看已安装软件_旁边妹子,的博客-程序员信息网_linux查看安装的软件

接触新的环境新的项目需要先了解当前环境下安装了哪些东西一、查看系统配置文件(检查已安装的软件)一些核心软件需要配置环境变量,less /etc/profile 查看(按G查看文件末尾的export)找export配置的理路径二、查看网络运作情况(检查已部署的应用)一些服务和应用是不会配置环境变量,需要通过其它额外的手段检测,可以有以下两种方式:  1、查看此机器上所有服务和应用运作情况:netstat -anp  从结果可以看出,目前已经安装并启动svn、mysql、nginx服务和一些j

React-router v6 在 Class 组件和非组件代码中的正确用法__超喜欢你呦"的博客-程序员信息网

最近内部正在开发的 react 项目 react-router-dom 全线升级到了 v6 版本,v6 版本中很多 API 进行了重构变更,导致很多旧写法失效,下面记录一下 history/hash 模块在v6中的用法。// IE polyfillimport 'react-app-polyfill/ie9'import 'react-app-polyfill/stable'import './styles/index.less'import HashHistory from 'histor.

绘画教程:常见的4种脸部绘画技巧_奇天cg学院的博客-程序员信息网_面部传达绘画

如何绘画人物脸部?内向人物怎么画?外向人物怎么画?人物性格怎么画?学习绘画难吗?怎样才能学好绘画?教程非常简单,赶紧来看看叭:为了消除无论您绘制哪个字符都将绘制同一张脸的担心,我将介绍“绘制不同字符的方法”。这次,这是五次系列赛中的第四次,让我们集中讨论绘制“传达个性的设计”的特定要点之一。考虑剪影这次,我们将考虑外向或内向与脸部各部分的轮廓。轮廓的形状给角色带来不同的印象,因此让我们用不同的方式绘制它。用眼睛思考眼睛是向外还是内向的印象有所不同,具体取决于它们的睁大程度。

推荐文章

热门文章

相关标签