UGUI 屏幕适配 导致 BoxCollider无效 解决记录
从来没有做过一个完整的游戏,所以用UGUI来做个手游界的 " Hello World " - 微信打飞机。看起来easy做起来也碰到各种奇异的问题。
昨天导出安卓包之后,在我的MX2上安装。測试发现 子弹碰到 敌机 毫无反应。敌机碰到我的飞机毫无反应。由于设计时的屏幕尺寸是640x940,而MX2是800x1280。
第一反应是屏幕分辨率问题。
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
于是在电脑上更改分辨率測试,把640x960 改动为 800x1280 ,重现了手机上的问题。
例如以下过程。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHV1dHU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
有两个 Image 在 界面中,是 设计时的分辨率 640x960 。
细心的朋友 在图中就能发现问题,红色Image PosZ为什么是1,不应该是 0 吗?
对的,因为粗心大意。在代码中 原本是设置 localScale为1的代码 却写成了 设置 localPosition 为1的无用代码。同一时候也导致了这次的错误。
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
另外一个蓝色 Image的设置
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHV1dHU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
PosZ为0。
按理说这两张图片不在同一 Z轴,不会相交,不会产生碰撞。
可是
由于蓝色、红色 Image 上的 BoxCollider 设置的 Z 大小都是1。所以 两个碰撞体 正好可以碰到,从而产生碰撞。
当更换了分辨率之后发生了什么?
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
首先我们让代码 Clone 出来一个 红色 Image,由于在代码中没有设置 localScale 为 1,所以随着分辨率变化,localScale 变成了 0.9。这样,红色Image 上面的 BoxCollider也因此 Z轴的大小变为了原来的 0.9 。
所以,两个BoxCollider 由于不在同一Z轴,红色的在1,蓝色的在0,并且两个BoxCollider的 Z 轴范围 1/2+0.9/2 不足以达到 两个BoxCollider的Z轴距离,没有相交,所以不能产生碰撞。
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
一切都是下面一段代码造成:
using UnityEngine;
using System.Collections; public class clonetest : MonoBehaviour { public Transform imgObj; // Use this for initialization
void Start () { GameObject clone = Instantiate (imgObj.gameObject) as GameObject;
clone.transform.SetParent (imgObj.parent);
clone.SetActive (true);
clone.transform.localPosition = Vector3.one; //本来应该设置localScale的代码写成了设置localPosition;
clone.transform.localRotation = Quaternion.identity; //对位置进行了其他设置;
clone.transform.SetlocalPositionX (-0.25f);
clone.transform.SetlocalPositionY (0f);
} // Update is called once per frame
void Update () { }
}
演示样例下载:
http://pan.baidu.com/s/1dDyEZNr
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
UGUI 屏幕适配 导致 BoxCollider无效 解决记录的更多相关文章
- Unity ugui屏幕适配与世界坐标到ugui屏幕坐标的转换
我们知道,如今的移动端设备分辨率五花八门,而开发过程中往往只取一种分辨率作为设计参考,例如采用1920*1080分辨率作为参考分辨率. 选定了一种参考分辨率后,美术设计人员就会固定以这样的分辨率来设计 ...
- 使用cocos2dx 3.2和cocosstudio屏幕适配总结----相对布局
屏幕适配的文章太多了,基本上都是理论性的东西.大家明确了机制就知道了.没有完美的适配方案,除非你们的美工愿意折腾. 常规策略: 今天研究了一下屏幕适配导致的缩放和展示不全的问题(黑边的方案直接淘汰). ...
- Android Camera多屏幕适配解决预览照片拉伸
通常,拍照预览页面的照片拉伸主要与下面两个因素有关: 1. Surfaceview的大小 2. Camera中的Preview的大小 如下图: 图中preview显示的是手机支 ...
- Android屏幕适配dp、px两套解决办法
"又是屏幕适配,这类文章网上不是很多了吗?" 我也很遗憾,确实又是老问题.但本文重点对网上的各种方案做一个简短的总结,和具体使用方法. 若想了解具体Android设备适配的前世因果 ...
- ie6,ie7,ie8 css bug兼容解决记录
ie6,ie7,ie8 css bug兼容解决记录 转载自:ie6,ie7,ie8 css bug兼容解决记录 - 前端开发 断断续续的在开发过程中收集了好多的bug以及其解决的办法,都在这个文章里面 ...
- Unity2D多分辨率屏幕适配方案(转载)
一下内容转自:http://imgtec.eetrend.com/forum/3992 此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有 ...
- [原创]一种Unity2D多分辨率屏幕适配方案
此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有使用第三方2D插件,如Uni2D,2D toolkit等开发的游戏,NGUI插件不受这个 ...
- Cocos2dx开发之屏幕适配
由于各种智能手机的屏幕大小都不一致,会出现同一张图片资源在不同的设备分辨率下显示不一样的问题.为避免这样的情况,需要Cocos引擎能提供多分辨率的支持,也就是说要求实现这样的效果 — 开发者不需要考虑 ...
- 一种Unity2D多分辨率屏幕适配方案
http://www.cnblogs.com/flyFreeZn/p/4073655.html 此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏 ...
随机推荐
- [BZOJ3638 && BZOJ3272]带修区间不相交最大K子段和(线段树模拟费用流)
https://www.cnblogs.com/DaD3zZ-Beyonder/p/5634149.html k可重区间集问题有两种建图方式,可能这一种才可以被线段树优化. 换个角度看,这也是一个类似 ...
- 【set】【可持久化Trie】The 16th UESTC Programming Contest Preliminary K - Will the circle be broken
题意:You are given an array A of N non-negative integers and an integer M. Find the number of pair(i,j ...
- Android中利用ant进行多渠道循环批量打包
公司负责Android开发的小伙伴学习能力稍微偏弱,交代给他的自动化打包的任务,弄了好久依然没有成效.无奈只好亲自出手. 没有想到过程很顺利,我完全按照如下文章的步骤进行: 主要参考: Android ...
- JavaScript数组中的22个常用方法
数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详细介绍. ...
- JVM监控启动参数
服务端: JVM监控启动参数 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=52001 -Dcom.sun.ma ...
- javascript小记-作用域
一.全局作用域 全局作用域的变量不论在什么时候都可以直接引用,而不必通过全局对象:满足以下条件的变量属于全局作用域:1.在最外层定义的变量2.全局对象的属性3.任何地方隐式定义的变量(未定义直接赋值的 ...
- JTAG接线描述
http://www.dzsc.com/data/html/2008-12-23/75397.html JTAG测试信号由下面5个信号组成. TRST:测试复位输入信号,测试接口初始化 TCK:测试时 ...
- node.js第11课(HTTPclient)
一.http模块提供了两个函数http.request和http.get,功能是作为client向HTTPserver发起请求. Ext.Ajax.request({},function ...
- [iOS] UIView的clipsTobounds属性
如题,有两个view: view1,view2view2添加view1到中,如果view2大于view1,或者view2的坐标不全在view1的范围内,view2是盖着view1的,意思就是超出的部份 ...
- C#编程(九)----------控制台I/O
原文链接:http://blog.csdn.net/shanyongxu/article/details/46454985 控制台I/O 可以使用Console.ReadLine()方法从控制台中读取 ...