UGUI的碰撞是可以用Collision2D跟Rigidbody2D实现的(就跟3D碰撞一样)。之前试过不可以主要问题正在于Collision2D以及Rigidbody的设置上。

碰撞双方都添加Collider2D但是没有调整碰撞器的大小。新建一个imaBox Collider2d,它的size为x:1,y:1,而image默认的width和height为100。

然后是添加Rigidbody2D

Simulated是一定要勾选的,如果这个不勾选Collider 2D和Joint 2D 就没有效果。如果在运行时勾选了Simulated会看到对象受重力影响(也就是往下掉),所以这里要把Linear Drag, Angular Drag,Gravity Scale这几个力的作用设为0。(这里需要注意,不能再运行时添加2D刚体!)

然后就要根据情况来设定你是要用trigger还是collision了。

这里就跟3d一样了,假如用trigger,要将碰撞双方中的其中一个将Collider的Is Trigger勾选,勾选谁是要求而定。Is Trigger勾选之后,它的位置就不会用碰撞影响了。

脚本检测事件用(双方都要添加collider2d,至少一方添加rigidbody2d)

// 开始接触//void OnTriggerEnter2D(Collider2D collider) {//    Debug.Log("开始接触");//  Debug.Log (collider.name);//}接触结束//void OnTriggerExit2D(Collider2D collider) {if(collider!=null)//{
        // Debug.Log("接触结束");//Debug.Log (collider.name);//}//}
  接触持续中//void OnTriggerStay2D(Collider2D collider) {// Debug.Log("接触持续中");// Debug.Log (collider.name);//}

  只要对象一直在勾选is trigger的对象的collision范围之内,OnTriggerStay2D就会一直触发。

如果要用Collision来检测的话,脚本用:

//void OnCollisionEnter2D(Collision2D coll) {//    Debug.Log ("-------开始碰撞------------");//  Debug.Log(coll.gameObject.name);//}//void OnCollisionStay2D(Collision2D coll) {//   Debug.Log ("------正在碰撞-------------");//  Debug.Log(coll.gameObject.name);//}//void OnCollisionExit2D(Collision2D coll) {//   Debug.Log ("------结束碰撞-------------");//  Debug.Log(coll.gameObject.name);//}

  这时候is trigger就不要勾选了,也是双方都要添加collider2d,至少一方添加rigidbody2d,不要忘了勾选rigidbody2d下的simulated

Unity 2D碰撞/UI组件碰撞相关推荐

  1. Unity自定义UI组件(一)函数图篇(上)

    Untiy自定义UI组件 ==转载标明出处== MaskableGraphic(可遮罩图形): MaskableGraphic是Unity中多种UI组件的父类,比如Image.Text等.Untiy官 ...

  2. unity 根据模型生成碰撞体_Unity之碰撞体组件

    3D物理组件中碰撞体组件添加与设置 碰撞体是物理组件中的一类,3D物理组件和2D物理组件有独特的碰撞体组件,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对象有碰撞体时 ...

  3. Unity 2.Space Shooter(碰撞器Collider,WebGL,刚体中属性,(定时)实例化、销毁游戏对象,触碰OnTriggerEnter/Exit,爆炸效果,音频,文字,定时调方法)

    目录 项目介绍 WebGL发布 游戏对象设置 灯光.相机 背景 移动游戏对象 Debug 制作子弹 射击动作 清理离开边界的游戏对象 制作危险物 添加爆炸,移动小行星,作为预制件 创建游戏控制器 循环 ...

  4. unity ui 概述_通过此概述了解Unity 2D和Platformer基础知识

    unity ui 概述 If you're shopping around for a 2D game engine, you've undoubtedly come across Unity. Di ...

  5. 关于Unity中的刚体和碰撞器的相关用法(一)

    1.创建一个3D工程 2.构造项目文件目录 3.保存场景为game_scene到文件夹scenes中 4.创建一个Plane平面类型的GameObject节点和一个Sphere球体类型的GameObj ...

  6. 【Unity】11.3 基本碰撞体(箱体、球形、胶囊、网格)

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 碰撞组件(Collider) 是另一种必须随刚体 (Rigidbody) 添加的组件,以便允许它和其他组件发生碰撞.或者 ...

  7. Unity学习日志_车轮碰撞器简介

    Unity学习日志_车轮碰撞器简介 1. 简介: 车轮碰撞器是一种针对地面车辆的特殊碰撞体.他有内置的碰撞检测.车轮物理系统和有滑胎摩擦的参考体.除了车轮,该碰撞体也可以用于其他游戏对象. 属性: M ...

  8. 向量几何在游戏编程中的使用系列二之2-D物体间的碰撞响应

    2019独角兽企业重金招聘Python工程师标准>>> 2-D物体间的碰撞响应 这次我要分析两个球体之间的碰撞响应,这样我们就可以结合以前的知识来编写一款最基本的2-D台球游戏了,虽 ...

  9. 关于Unity中的Mesh Collider碰撞器

    原来我的场景中有一个平面Plane带Mesh Collider碰撞器组件,一个主角Hero带有一个Box Collider碰撞器和有重力的Rigidbody刚体组件,主角可以放在平面上. 在导入场景后 ...

最新文章

  1. Validation failed for one or more entities. See ‘EntityValidationErrors’解决方法
  2. linux通过管道的进程通信,linux 线程或进程之间通过管道通信(pipe)
  3. magento php mysql,安装lnmp nginx php mysql环境 -magento
  4. Java对象容器——顺序容器及常用方法
  5. python matplotlib画图产生的Type 3 fonts字体没有嵌入问题
  6. linux中service的问题
  7. 2015蓝桥杯省赛---java---A---9(垒筛子)
  8. Vue监视---vue工作笔记0005
  9. C++标准转换运算符:static_cast
  10. Application.mk文件官方使用说明
  11. html中播放的语法是什么,css语法是什么?
  12. 首个万人远程培训项目顺利启动
  13. PowerDesigner(八)-面向对象模型(用例图,序列图,类图,生成Java源代码及Java源代码生成类图)(转)...
  14. jQuery 中console.log什么意思
  15. 初级会计最后一个月稳过秘籍
  16. 什么是嵌入式开发?嵌入式软件开发入门教程
  17. 求二叉树根节点到叶节点的所有路径
  18. 配置yun源和在虚拟机中安装JDK
  19. 家电行业竞争日趋白热化,海尔缘何能创造七连冠奇迹?
  20. Linux7.3安装yum工具,Red Hat Enterprise Linux 7.3更换CentOS 7 yum源

热门文章

  1. spellman电源维修PCM70N120高压发生器维修
  2. 计算机1级考试试题ps,计算机一级《PS》考试及基础习题与答案
  3. ActiveMQ 配置启动文件介绍
  4. C/C++超级玛丽C++游戏项目详细教程
  5. ST-Link使用教程
  6. SitePoint播客#110:路易的首秀
  7. SitePoint播客#152:芬兰对面
  8. Loadrunner 2021 入门
  9. element中 el-input 中的 autocomplete 属性怎么使用,为什么不生效
  10. 2022年江苏专转本计算机应用基础