码迷,mamicode.com
首页 > 其他好文 > 详细

UGUI 屏幕适配 导致 BoxCollider无效 解决记录

时间:2015-06-04 06:15:33      阅读:555      评论:0      收藏:0      [点我收藏+]

标签:unity3d   界面   适配   碰撞体   

从来没有做过一个完整的游戏,所以用UGUI来做个手游界的 " Hello World " - 微信打飞机,看起来容易做起来也碰到各种奇妙的问题。

昨天导出安卓包之后,在我的MX2上安装,测试发现 子弹碰到 敌机 毫无反应,敌机碰到我的飞机毫无反应,因为设计时的屏幕尺寸是640x940,而MX2是800x1280。第一反应是屏幕分辨率问题。

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

于是在电脑上更改分辨率测试,把640x960 修改为 800x1280 ,重现了手机上的问题。


如下过程。

技术分享

转自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的设置

技术分享


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无效 解决记录

标签:unity3d   界面   适配   碰撞体   

原文地址:http://blog.csdn.net/huutu/article/details/46353887

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!