UGUI 屏幕适配 导致 BoxCollider无效 解决记录
从来没有做过一个完整的游戏,所以用UGUI来做个手游界的 " Hello World " - 微信打飞机。看起来easy做起来也碰到各种奇异的问题。
昨天导出安卓包之后,在我的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 initializationvoid 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 framevoid Update () {}
}
演示样例下载:
http://pan.baidu.com/s/1dDyEZNr
转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn
转载于:https://www.cnblogs.com/gccbuaa/p/6708986.html
UGUI 屏幕适配 导致 BoxCollider无效 解决记录相关推荐
- vue移动端html5页面根据屏幕适配的四种解决方法
最近做了两个关于h5页面对接公众号的项目,不得不提打开微信浏览器内置地图导航的功能确实有点恶心.下次想起来了的话,进行总结分享一下如何处理.在vue移动端h5页面当中,其中适配是经常会遇到的问题,这块 ...
- Unity中的UGUI屏幕适配
本文分享Unity中的UGUI屏幕适配 屏幕适配一直是一个老生常谈的问题, 虽然只是项目一开始的时候会用到, 但是还是有很多东西需要学习和了解, 今天给大家分享下一些个人的学习和总结. 各种坐标 屏幕 ...
- nginx负载均衡配置无效解决记录
1.查看是否进行跨域配置 upstream redislock{ server 192.168.3.197:8001; server 192.168.3.197:800 ...
- Android 屏幕适配终结者
本文作者: 布兰柯基 本文链接: https://blankj.com/2018/12/18/android-adapt-screen-killer/ 文末有彩蛋 背景 之前基于头条的适配方案写了篇文 ...
- Android屏幕适配前先了解这些
前言:之前很火的屏幕适配方案不知道大家都去尝试过写进项目中没,应该有一部分人在隔岸观火,大概的原因就是目前并没有遇到能把项目重构的适配问题,另一方面就是有的适配方案还没有很成熟的应用,都不想拿自己的项 ...
- 有效解决3D游戏边缘锯齿现象及全面理解LayaAir引擎游戏屏幕适配!
有的时候看到一些3D游戏锯齿感特别明显,与一些开发者沟通后发现,其实很多人并不清楚怎么能去掉明显的锯齿感,而这并不是只有新开发者才遇到的问题,很多游戏研发经验丰富的开发者,甚至是使用LayaAir引擎 ...
- ubuntu (20.04 LTS) 屏幕亮度调节无效解决方法
ubuntu屏幕亮度调节无效解决方法 问题描述 尝试过的解决方法 解决方法发现历程 解决方法 总结 问题描述 因为学习需要,在Win10系统的基础上安装了Ubuntu20.04 LTS 双系统,但 ...
- android屏幕适配无效_Android屏幕适配出现的原因
在我们学习如何进行屏幕适配之前,我们需要先了解下为什么Android需要进行屏幕适配. 由于Android系统的开放性,任何用户.开发者.OEM厂商.运营商都可以对Android进行定制,修改成他们想 ...
- android碎片化的解决方法,解决 Android 设备碎片化--屏幕适配
随着支持 Android 系统的设备(手机.平板.电视.手表)的增多,设备碎片化.品牌碎片化.系统碎片化.传感器碎片化和屏幕碎片化的程度也在不断地加深. 在当时初学 Android 的时候,就初步接触 ...
最新文章
- 联邦学习--数据攻击(2)
- android 代码添加图片不显示,Android开发 从代码里设置Drawable图片不显示的问题
- 机器视觉用c还是python_机器视觉_opencv-python环境搭建
- 数据结构与算法之--高级排序:shell排序和快速排序
- sql server 关联_SQL Server中的关联规则挖掘
- Postgres 数据库字符集更改 ERROR: new encoding (UTF8) is incompatible
- CCCC-GPLT L2-020. 功夫传人 团体程序设计天梯赛
- html标签之间去掉空白,html – 减少两个标签之间的空白差距
- ubuntu下oracle数据的导入,Ubuntu下Oracle10g的导入与导出
- 转Win 7 快捷键
- 51nod1005大数加法(C语言实现大数)
- crackme003
- 二元函数连续性、可导性及极限
- SpringCloud入门简介
- 计算机应用个人职业发展规划简短,个人职业生涯规划
- r730 raid5 linux 驱动,Dell power edge R730 raid卡安装配置
- 【SpringBoot项目中使用Mybatis批量插入百万条数据】
- BooT模式: Flash、ISP、SRAM
- 人工智能的核心技术是什么?
- 用jQuery添加dragstart,dragover和drop事件,实现拖拽效果
热门文章
- 如何确定自己是否适合做程序员?
- ​给前端开发者的 14 个 JavaScript 代码优化建议
- 【干货】写给初中级前端的高级进阶指南
- pandas groupby count_数据分析14-利用pandas进行数据分组
- QT保留小数点后几位
- druid监控页面_Spring boot学习(四)Spring boot整合Druid
- python每行输出8个式子_多图+代码 | 详解Python操作Excel神器openpyxl的各种操作!
- C语言学习笔记---位字段
- FPGA学习笔记---Verilog HDL 可综合语句和不可综合语句汇总
- 将Tomcat集成到IDEA