Unity 2D碰撞/UI组件碰撞
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组件碰撞相关推荐
- Unity自定义UI组件(一)函数图篇(上)
Untiy自定义UI组件 ==转载标明出处== MaskableGraphic(可遮罩图形): MaskableGraphic是Unity中多种UI组件的父类,比如Image.Text等.Untiy官 ...
- unity 根据模型生成碰撞体_Unity之碰撞体组件
3D物理组件中碰撞体组件添加与设置 碰撞体是物理组件中的一类,3D物理组件和2D物理组件有独特的碰撞体组件,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对象有碰撞体时 ...
- Unity 2.Space Shooter(碰撞器Collider,WebGL,刚体中属性,(定时)实例化、销毁游戏对象,触碰OnTriggerEnter/Exit,爆炸效果,音频,文字,定时调方法)
目录 项目介绍 WebGL发布 游戏对象设置 灯光.相机 背景 移动游戏对象 Debug 制作子弹 射击动作 清理离开边界的游戏对象 制作危险物 添加爆炸,移动小行星,作为预制件 创建游戏控制器 循环 ...
- unity ui 概述_通过此概述了解Unity 2D和Platformer基础知识
unity ui 概述 If you're shopping around for a 2D game engine, you've undoubtedly come across Unity. Di ...
- 关于Unity中的刚体和碰撞器的相关用法(一)
1.创建一个3D工程 2.构造项目文件目录 3.保存场景为game_scene到文件夹scenes中 4.创建一个Plane平面类型的GameObject节点和一个Sphere球体类型的GameObj ...
- 【Unity】11.3 基本碰撞体(箱体、球形、胶囊、网格)
分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 碰撞组件(Collider) 是另一种必须随刚体 (Rigidbody) 添加的组件,以便允许它和其他组件发生碰撞.或者 ...
- Unity学习日志_车轮碰撞器简介
Unity学习日志_车轮碰撞器简介 1. 简介: 车轮碰撞器是一种针对地面车辆的特殊碰撞体.他有内置的碰撞检测.车轮物理系统和有滑胎摩擦的参考体.除了车轮,该碰撞体也可以用于其他游戏对象. 属性: M ...
- 向量几何在游戏编程中的使用系列二之2-D物体间的碰撞响应
2019独角兽企业重金招聘Python工程师标准>>> 2-D物体间的碰撞响应 这次我要分析两个球体之间的碰撞响应,这样我们就可以结合以前的知识来编写一款最基本的2-D台球游戏了,虽 ...
- 关于Unity中的Mesh Collider碰撞器
原来我的场景中有一个平面Plane带Mesh Collider碰撞器组件,一个主角Hero带有一个Box Collider碰撞器和有重力的Rigidbody刚体组件,主角可以放在平面上. 在导入场景后 ...
最新文章
- Validation failed for one or more entities. See ‘EntityValidationErrors’解决方法
- linux通过管道的进程通信,linux 线程或进程之间通过管道通信(pipe)
- magento php mysql,安装lnmp nginx php mysql环境 -magento
- Java对象容器——顺序容器及常用方法
- python matplotlib画图产生的Type 3 fonts字体没有嵌入问题
- linux中service的问题
- 2015蓝桥杯省赛---java---A---9(垒筛子)
- Vue监视---vue工作笔记0005
- C++标准转换运算符:static_cast
- Application.mk文件官方使用说明
- html中播放的语法是什么,css语法是什么?
- 首个万人远程培训项目顺利启动
- PowerDesigner(八)-面向对象模型(用例图,序列图,类图,生成Java源代码及Java源代码生成类图)(转)...
- jQuery 中console.log什么意思
- 初级会计最后一个月稳过秘籍
- 什么是嵌入式开发?嵌入式软件开发入门教程
- 求二叉树根节点到叶节点的所有路径
- 配置yun源和在虚拟机中安装JDK
- 家电行业竞争日趋白热化,海尔缘何能创造七连冠奇迹?
- Linux7.3安装yum工具,Red Hat Enterprise Linux 7.3更换CentOS 7 yum源