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

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

然后是添加Rigidbody2D

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

然后就要根据情况来设定你是要用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】11.3 基本碰撞体(箱体、球形、胶囊、网格)

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

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

    在关于Unity中的刚体和碰撞器的相关用法(一)的基础上 有一个plane平面,一个ball球体,都挂了碰撞器,ball挂了刚体Rigidbody,写了一个脚本ball挂载在球体上,球体从空中落下装机 ...

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

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

  4. 游戏中的2D OBB碰撞模型的碰撞算法介绍和实践

    前言 上一篇博文说道,射线与场景中模型上的所有三角形求交时,会大幅度影响效率且花费比较多的时间,因此会采取使用包围盒的形式,进行一个加速求交.在此文中介绍OBB碰撞模型的碰撞算法 OBB的碰撞模型 有 ...

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

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

  6. Unity - 2D中的物理关节

    本文概述: 分析Unity中几个2D物理关节组件的基本功能.使用方法.运用场景等 开发环境:Unity2019.3.0a2 / VS2017 项目资源包: 2D Joints Starter 说明: ...

  7. Unity 2D游戏开发教程之游戏中精灵的跳跃状态

    Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...

  8. Unity 2D 入门

    原文:Introduction to Unity 2D 作者:Sean Duffy 译者:kmyhy 3/15/17 更新说明: 升级至 Unity 5.5. Unity 是一个非常流行和强大的游戏引 ...

  9. NGUI创建Camera参数为Simple 2D的UI UI对象的结构UI Root(2D)

    NGUI创建Camera参数为Simple 2D的UI UI对象的结构UI Root(2D) 使用NGUI创建的Camera参数为Simple 2D的UI,会在游戏的场景中生成1个名为UI Root( ...

随机推荐

  1. continue and break

    #1.continue终止当前循环开始下一次循环count = 0while count < 10: if count == 7: count = count +1 continue print ...

  2. vs code中自动添加注释插件koroFileHeader

    github链接及教程: https://github.com/OBKoro1/koro1FileHeader 使用方法: 1.安装插件koroFileHeader 2.文件->首选项-> ...

  3. source ~/.bashrc

    编辑命令: gedit ~/.bashrc source ~/.bashrc 每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置, ...

  4. appium--元素等待和屏幕截图

    元素等待 设置元素等待可以更加灵活的指定等待元素的时间,从而增强脚本的健壮性,提高执行效率 强制等待 from time import sleep sleep(5) 隐式等待 隐式等待是针对全部元素设 ...

  5. java的GUI之SWT框架 配置开发环境(包含但不限于WindowBuilder完整教程,解决Unknown GUI toolkit报错,解决导入SWT包错误)

    官网(资料挺多的,API文档截图以及示例都有):https://www.eclipse.org/swt/ 克隆官方仓库 git clone --depth=1 git://git.eclipse.or ...

  6. Java Web 之 SSM笔记

    好久没有写博文了呀呀呀........博客园的MarkDown还是...算了吧 自定义 Restful 风格结果集 参考资料 [SpringBoot专题]统一异常处理和统一数据返回前言实践运行结果 如 ...

  7. Qt Quick 常用元素:TabView(选项卡) 与 Slider(滑块)

    一.TabView TabView 可以实现类似 Windows 任务管理器的界面,有人叫 TabView 为标签控件,有人又称之为选项卡控件,我们知道它就是这么个东西就行了.现在来介绍 TabVie ...

  8. sqlite删除数据

    sqlite删除数据 某日, 在使用sqlite的时候发现查询速度极慢, 查看了一下文件大小, sqlite数据库文件已经达到了 22G! 对于一个文件数据库来说, 已经相当致命了,先不说后面如果解决 ...

  9. 如何定时查询某线程的CPU执行时间

    #!/bin/bash pid=$(ps -T -p $(pgrep xxx) | grep xxx | gawk -F" " '{print $2}') if [ -z $pid ...

  10. D-Bus

    D-Bus三层架构 D-Bus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信.它是个3层架构的IPC 系统,包括: 1.函数库libdbus ,用于两个应用程序互相联系和交互消息. 2.一 ...