首页 > 其他分享 >Unity物体之间碰撞检测的方法

Unity物体之间碰撞检测的方法

时间:2024-05-21 14:53:07浏览次数:21  
标签:Collider 物体 碰撞 碰撞检测 Unity other void 刚体

检测碰撞有两种方式,一种是利用碰撞器,另外一种就是触发器。 碰撞器的种类: 1.Static Collider 静态碰撞器 指的是相互碰撞的两个物体没有附加刚体而只附加了Collider的游戏对象。这类对象在碰撞时会保持静止,发生碰撞时不会触发任何的方法函数。   2.Rigidbody Collider 刚体碰撞器 在静态碰撞器的基础上,处于运动状态的物体必须要附加刚体组件和带有碰撞检测函数的脚本,被撞的物体可以没有刚体组件或碰撞检测脚本。当两个物体发生碰撞时,带有刚体组件的物体会发生物理特性,如被撞飞,或有摩擦力的影响下移动一段距离。   3.Kinematic Rigidbody Collider 运动学刚体碰撞器 在第2点得基础上勾选了刚体组件中的IsKinematic属性,在发生碰撞时能检测到碰撞,但是勾选ISkinematic属性的物体不会因为撞击而发生位移,它任待在原地不动,若要想让它发生移动,只能用transform.translate的方法。(如果要移动这类对象,就只能修改它的Transform,而不是用力) 触发器: 这三种碰撞器如果被撞击的物体的Collider勾选了IsTrigger复选框,就变成了相应的触发器了,若此时该物体被撞击,撞击该物体的对象会穿进被撞的物体中,同时触发void OnTriggerEnter(Collider other)方法。 碰撞器的检测函数:(只有带刚体的碰撞才能触发检测函数,而且处于运动中的物体必须带检测函数的脚本,other.gameObject为撞击中的对方物体)

void OnCollisionEnter(Collision other);
void OnCollisionStay(Collision other);
void OnCollisionExit(Collision other);
触发器的检测函数:(任何带有触发器的碰撞都能触发检测函数)
void OnTriggerEnter(Collider other);
void OnTriggerStay(Collider other);
void OnTriggerExit(Collider other);

 

 

标签:Collider,物体,碰撞,碰撞检测,Unity,other,void,刚体
From: https://www.cnblogs.com/weigangblog/p/18204040

相关文章

  • Unity WebGL的一些配置
    添加自定义值方法:在网页模板中,添加<title>公司名字|{{{PROJECT_NAME}}}</title>///读取PlayerSettings.GetTemplateCustomValue("PROJECT_NAME");///设置PlayerSettings.SetTemplateCustomValue("PROJECT_NAME","这是一个自定义值");修改WebGL模板说......
  • Arch Linux CN Community repo mirrors list
    kate /etc/pacman.conf/etc/pacman.d/mirrorlist ##Ourmainserver(Amsterdam,theNetherlands)(ipv4,ipv6,http,https)[archlinuxcn]Server=https://repo.archlinuxcn.org/$arch ##CERNET(中国)(ipv4,ipv6,http,https)##Added:2023-08-19##Thiswill......
  • Unity优化总结(2021.04.08)
    项目性能优化的三个方面:1.CPU优化Cpu优化不够会出现的问题:由于短时间计算量太大,画面流畅性降低,出现跳帧发热严重,耗电量高(1)代码方面删除一些空的方法,尤其是Update等;使用for循环代替foreach,使用List代替ArrayList,尽量少使用封箱拆箱操作;循环中可以Break掉的直接退出循......
  • Unity性能优化CPU优化
    CPU主要进行计算机的各种计算操作,因此关于CPU性能优化的方面和Tips有很多,有些影响大有些影响小,有些容易优化有些不易优化,细节方面也有很多,归类之后重点讲几个方面,并列出常见Tips。对CPU性能影响比较大的主要有以下几个方面:DrawCalls,物理组件,GC,代码质量,其中DrawCall是CPU优化最先......
  • Unity性能优化GPU渲染优化
    GPU优化不够容易出现1.发热严重,耗电量高2.FPS降低GPU优化的方向:1.像素的复杂度,比如实施阴影(手游中禁用),复杂的shader2.顶点过多,也就是模型面数多、复杂3.GPU的显存带宽 一、优化美术资源1)合理规划图集2)约定好模型的最大三角形面数3)制定合理的粒子效果规范4)减少模型数......
  • Unity性能优化内存优化
    如何优化内存?1.压缩自带类库;2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;3.释放AssetBundle占用的资源;4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;5.使用光照贴图;6.使用多层次细节(LOD);7.使用着色器(Shader);8.使用预设(Prefab)等。 内存开......
  • Unity内存优化(来自uwa)
    内存优化——“勿以善小而不为,勿以恶小而为之” 资源内存占用一、纹理资源纹理资源可以说是几乎所有游戏项目中占据最大内存开销的资源。一个6万面片的场景,网格资源最大才不过10MB,但一个2048x2048的纹理,可能直接就达到16MB。因此,项目中纹理资源的使用是否得当会极大地影响......
  • Unity场景预加载
    async.allowSceneActivation=false;privateAsyncOperationasync;async=SceneManager.LoadSceneAsync("MainScene");async.allowSceneActivation=false;yieldreturnStartCoroutine(Loading());IEnumeratorLoading(){floatcurProgress......
  • Unity中Reorderable List用法(待维护)
    Unity官方文档里完全没有提到ReorderableList类,这是因为它不在UnityEngine或UnityEditor的命名空间下,而是在UnityEditorInternal命名空间下,这个命名空间里的东西是没有官方文档支持的 ReorderableList的作用它的作用,是让一个数组,在Unity的Inspector界面上显示得更好一些//......
  • Invalid URI at UnityEngineInternal.WebRequestUtils.MakeInitialUrl (System.Stri
    问题背景:有一个项目用到3d模型,原来访问地址用的是域名,访问老是报跨域问题,于是换成了内网地址这么一换问题来了,控制台直接报错 FormatException:InvalidURIatUnityEngineInternal.WebRequestUtils.MakeInitialUrl(System.StringtargetUrl,System.StringlocalUrl)[0......