unity 2d 教程发布手机为什么比较反光

学习Unity2D屏幕点击选中方法 VR开发教程
可能在手机端做2D屏幕点击,选中精灵的操作还是比较少的,所以这方面的可以查到的资料也比较匮乏,很多都是3D中的选中算法,实际原理也比较简单,就是射线命中法,从相机到屏幕点击点发出射线,命中的精灵就是点击选中的精灵了,当然精灵要有物理碰撞的区域,不然无法检测。实际原理都是一样的。
1.Raycast法
原理相同于3D中得Raycast法,具体使用略有区别。
RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if(hit.collider != null)
  Debug.Log (\&Target Position: \& + hit.collider.gameObject.transform.position);
2.Overlap法
个人觉得这个方法对于2D更合适一些,判断点击的点落在了哪些collider中。
Collider2D[] col = Physics2D.OverlapPointAll(Camera.main.ScreenToWorldPoint(Input.mousePosition));
if(col.Length & 0)
&&&&foreach(Collider2D c in col)
以上代码中用到的是mousePosition,对于触摸的Touch原理完全相同。
现在方法有了剩下的就是如何实践实现的问题了,在我看来具体实现涉及到两个问题,一个是鼠标点击选中,另一是选中后如何呈现。真正实现了这两点才算是一个及格的学习实践。最终实现效果如下图所示:
这里有了背景分析后,我们的需求是这样:
&通过鼠标点击场景中的精灵,置精灵为选中状态(这里采用的方式是透明化)&。
有了需求,我们开始技术分析,大体需要一下几个知识点,我们逐一破结,学习
1、鼠标点击
2、2D精灵命中测试,需要2D物理碰撞
3、给精灵添加物理碰撞
4、命中的深度测试(根据原理被射线穿透的可能有多个精灵而我们应该选中的应该是离相机最近的,也就是深度最小的且唯一)
5、选中精灵的透明化处理
列出这五点出来,我也有点惊讶了,竟然这么多技术功能点,汗!
1、鼠标点击
有两种方式实现,
传统方式在Update中添加鼠标点击处理,如下所示:
&&& void Update () {
&&&&&&& if (Input.GetMouseButtonDown(0))
&&&&&&& {}
这种方法的缺点,就是放在Update中的逻辑较多,当代码复杂的时候,可读性比较差
用Unirx实现,有点像传统的winform事件订阅方式
void Start()
//鼠标点击控制
Observable.EveryUpdate().Where(_ =& Input.GetMouseButtonDown(0)).Subscribe(LeftMouseClick2);
2、2D精灵命中测试
这个基本就是用资料中的Overlap法 ,这里代码就不贴出来了,在4中会贴出完整代码。
3、给精灵添加物理碰撞
这里可以用传统的方式在Unity IDE中可视化的为GameObject添加 ColliderBox组件,然后设置Size也就是鼠标点击区域
由于教程中的精灵是动态创建的,所以我的Box Collider 2D插件也是用代码动态添加的,这里当然也可以不局限Box Collider 2D如果需要更好的物理选中效果,也可以采用更精确的,我的代码如下所示:
//动态添加碰撞
BoxCollider2D boxCollider2D = qxPlayer.AddComponent&BoxCollider2D&();
boxCollider2D.size = new Vector2(mixSpriteSetting.Collider2DSizeWidth, mixSpriteSetting.Collider2DSizeHeight);
其中qxPlayer就是我的精灵GameObject了。
4、命中的深度测试
实际上要解决的问题就是&根据原理被射线穿透的可能有多个精灵而我们应该选中的应该是离相机最近的,也就是深度最小的且唯一&
如何获取最近的精灵的我查阅了下Unity API文档 关键部分我用红色字标出来了:
Get a list of all colliders that overlap a point in space.
This function is similar to OverlapPoint except that all colliders that overlap the point are returned.&The colliders in the returned array are sorted in order of increasing Z coordinate.&An empty array is returned if there are no colliders over the point.
Note that this function will allocate memory for the returned Collider2D array. You can use OverlapPointNonAlloc to avoid this overhead if you need to make the check frequently.
有了Unity卓越的工作,再加上本身我的精灵对象使用的画家算法,自然数组中第一就是离相机(屏幕)最近的了,接下来只要根据Name获得第一个精灵即可,如下代码所示
/// &summary&
/// 鼠标左键点击
/// &/summary&
/// &param name=\&l\&&&/param&
private void LeftMouseClick2(long l)
&&&&Collider2D[] col = Physics2D.OverlapPointAll(Camera.main.ScreenToWorldPoint(Input.mousePosition));
&&&&if (col.Length & 0)
&&&&&&&&foreach (Collider2D c in col)
&&&&&&&&&&&&string keyName = c.GetComponent&Collider2D&().gameObject.
&&&&&&&&&&&&QXPlayerController sprite = Find(keyName);
&&&&&&&&&&&&if (sprite != null)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&sprite.SetTransparent(true);
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&Debug.Log(\&Target Position: do what you want\& + keyName);
&&&&&&&&&&&&&&&&break;&&&&&&&&&&&&&&&
&&&&&&&&&&&&}
其中Find函数通过gameObject.Name遍历查找我在场景中所有的精灵对象的封装函数,比较简单就不解释了
/// &summary&
/// 在场景地图中查找Name精灵控件
/// &/summary&
private QXPlayerController Find(string name)
&&&&return sprites.ContainsKey(name) ? sprites[name] : null;
5、选中精灵的透明化处理
设置选中精灵的半透明就变的轻松加愉快了,代码如下比较简单
/// &summary&
/// 设置透明度
/// &/summary&
/// &param name=\&isTransparent\&&true为透明,false为不透明&/param&
public void SetTransparent(bool isTransparent)
&&&&spriteRenderer.color = new Color(1f, 1f, 1f, isTransparent?0.5f:1f);
至此一套完整的Unity 2D 精灵鼠标点击选中的解决方案完成了,希望对您有帮助。
<font color=#-20<font color=#-20<font color=#-19<font color=#-15<font color=#-14<font color=#-14<font color=#-14<font color=#-14<font color=#-14<font color=#-13
早在去年7月份,为了让 VR/AR 应用开发人员更轻松地创建和更直观地看到 3D 虚拟对象,...
想知道在Unity中如何将游戏中角色对话的唇型与面部微表情达到次时代的水准吗?想知道...
近日,RLTY CHK工作室的联合创始人Nick Robinson发布了一篇文章,以媒体天师麦克卢汉...
VR设计师和开发者们开始着手如何让VR环境及体验更加有趣、逼真。以下是一些关于如何为room...
笔者在为《幻想装置》和《工作模拟》制作出混合现实的预告片以后,研究了更深层次的VR...打开微信,点击底部的“发现”,使用“扫一扫”即可将网页分享至朋友圈。
您已超过时限,您的订单已经取消。对给您带来的不便,我们深表歉意!
Unity 2D 新功能发布会
北京&朝阳区&建国路93号 万达索菲特大饭店 7楼
活动详情Unity 2D 新功能发布会将于北京举办!&Unity 引擎早在 4.3 版本中就拥有了原生的 2D 开发功能,许多优秀的开发工作室和游戏公司已经使用Unity引擎开发出了许多画质精良,风格独特且游戏性极强的作品,比如大家耳熟能详的《奥日与迷失森林》,《Jotun佐敦》等。Unity 一直非常注重对于 2D 游戏开发技术投入与研发,在即将发布的 Unity 5.3 和 5.4 版本中,Unity 将会新增大量实用的 2D 游戏开发新功能。12月17日,Unity 将在北京首次举办 Unity 2D 技术新功能发布会!届时,来自新加坡的 Unity 2D核心研发团队成员将首次来华,为国内开发者分享 Unity 最新的 2D 开发功能以及未来 2D 功能的研发规划!现场更有关于 Unity 2D 游戏开发新功能的圆桌讨论,开发者将有机会基于自己开发的2D游戏作品,与 Unity 2D 开发专家面对面探讨 2D 游戏的开发新方向以及开发过程中遇到的问题!除了阵容强劲的 Unity 2D 研发团队外,本次活动还请到了 Intel 的技术大使,赵天奇先生为参会者分享 Intel RealSense 深度传感器的应用技术。活动日程,先睹为快:Johaness &Joh& Reuben (Unity Product Evangelist) -&巧用最新&Unity 2D&工具打造&2D&游戏世界Leo Yaik (Unity 2D Team Programmer) – Asset Bundle&与资源转换Paul Tham (Unity 2D Team Lead) – Unity 2D&开发新功能圆桌讨论赵天奇&( Intel&技术大使) – Intel RealSense&深度传感器技术分享 报名
2D 发布会入场券
Unity, 2D Team Lead
Johaness Reuben
Unity, Product Evangelist
Unity, 2D Programmer
英特尔, 技术大使
建国路93号 万达索菲特大饭店 7楼Unity2D游戏画质变模糊【unity吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:26,465贴子:
Unity2D游戏画质变模糊收藏
本人正在做一款2D横版动作手游,做到中后期发现导出来之后游戏里面的2D贴图都变模糊了,跟在Unity引擎预览的相差很多,不忍直视,不知道怎么解决这个问题。据说这个问题是导出的时候Unity自动压缩图片造成的,但是不知道怎么解决,有相关经验的麻烦指点一二。
这个选项,第一项调大,Format里面选TrueColor试下,一般可以改善图片质量,另外就是图片的分辨率要是2的幂次方。另外我也有个问题想咨询下楼主,做2D开发时,怎么解决背景抖动问题,其他游戏还好,跑酷等快速移动的游戏时,背景会规律抖动,不是跳帧问题,摄像机和人物也都是用FixedUpdate方法更新移动,但还是抖动,怎么解决啊?
没做过2D跑酷~那最后怎么解决了
不要勾选mip maps
登录百度帐号unity2D官方各类几乎所有教程视频自制中文字幕 | Unity 2D 开发小组 | indienova 独立游戏
Unity 2D 开发小组
讨论 Unity 2D 相关开发内容的小组
unity2D官方各类几乎所有教程视频自制中文字幕
干货请直接看分隔线以下,sorry。看这地方真冷清啊,Unity2D发布出来时间也有几年了,我也是被unity 2d特性吸引才走向了开发游戏的道路。但说实话,目前为止,相较于unity 3d的老本行,2d部分总像是后妈养的,特性提供的不是特别的快。但是毕竟是个十分强大的引擎,开发的话,已经有非常多的大作了,证明引擎本身时没问题的。不过,话说回来,好多大作都是很牛的人,针对自己的游戏做了很多定制化的工作,一般开发者和小的工作室肯定还是更关心unity本身提供的功能。个人感觉,现在2d部分最缺乏的两个是更灵活的光照和自动寻路的功能,在3d的特性里这都属于是基础和核心功能,lighting和navmesh,但是2d的话要么就纯靠美工画出光照,要么就用官方提供的sprite diffuse 着色器,要么去asset store 找插件。寻路也是一样,官方商店的a* 寻路插件卖的火的飞起。还有输入的控制功能,也是比较简陋,商店的rewired和inControl都是弥补这方面不足的,卖的也是火。unity 自己的新版本输入系统内部论坛上也讨论了好久,出了一个帖子,最近也没消息。前面都是菜鸟的废话,下面的都是我之前发的帖子里的话,以前在独立游戏贴吧发过,收了个精华帖,贴吧基本不去了,总感觉风气不好,哎。-------------------------------------手动分隔,下面是一年前的我说的话---------------------------------------------------------------------------unity2D的官方tutorial上已经有了不少的教程视频,都看一遍的话最起码也知道unity能干什么了。自学这段时间里我翻译不少,之前也发过,都放到b站了,基本都是1080p的,而且压制后文件不大,小水管看也不会卡,教程这玩意要是连编辑器的字都看不清就没意思了。在这里整理下,按照我觉得的观看先后顺序吧:1)Unity 2D 游戏开发官方初学者教程1~15:这个系列第一集是整体介绍,适合先看下,后面开始具体讲unity 针对2D提供了什么功能,估计你能在看得过程中发现以前玩过的某些游戏的影子,呵呵。视频地址:http://www.bilibili.com/video/av3246302/2)从2D角度带你认识Unity——官方线上直播教程录像 :这个是官方对2D部分的一次线上直播教程,unity的线上直播教程一直是很有干货的,这个视频就比较全面的讲了一遍unity 2D部分的功能和一些概念。在看第一个的过程中建议把这个看了,有助于理解。视频地址:http://www.bilibili.com/video/av3317620/3)Unity官方游戏脚本开发教程初级 1~28:这个系列教你怎么在unity里写脚本,虽然是初级,但是建议对编程有一定的了解,有点就行。初级基本就能满足写一个游戏的需要了,中级部分比较多的设计模式和面向对象概念应用的东西,没这些东西以前的人不也过日子了。&视频太多分了3部分:part 1: http://www.bilibili.com/video/av3361629/part2 :http://www.bilibili.com/video/av3370494/part3:http://www.bilibili.com/video/av3391070/另外这个系列的第15节是文章,讲线性插值,我发到自己blog上了,整个blog就三篇文章,大家去就看到了。地址是 bumingzhe.com,这么麻烦估计大家懒得去,随意了。4)Unity官方游戏脚本开发教程初级 1~18:还是教如何在unity里写脚本,不过更侧重于编程思想,面向对象理论的东西,作为一定程度的提高,分成上下两个组。上 &:http://www.bilibili.com/video/av6271851/下 &:http://www.bilibili.com/video/av6350468/5) Unity官方GUI教程合集,就是长说的UGUI,unity 提供的界面开发工具 1~11:http://www.bilibili.com/video/av3539342/另外我自己也录了些学习笔记,高手就不要看了。我以后代号就叫风农了,话说之前还有网站想找我做教程,真汗颜啊,我这点墨水就暂时不去献丑了。希望对大家有点帮助,欢迎收藏这些视频,欢迎在b站关注风农,b站挺好的,最起码看之前不用等两分钟是吧。
近期喜欢的会员
话说之前unity 官方招民间人士帮忙翻译一些资源,我以为是要针对中国开发者造福利了,结果参加进去之后,大家热情虽然高涨,但是还是感觉太官方了,速度嘛,这些事情已经是16年3月份左右的事了,现在水泡都没有一个。。。官方文档还是没中文,官方的视频还是不给个国内能看的地址,字幕都不奢望了。所以搞开发,还是得学好英语,哎。
不给国内能看的视频地址是最伤的。
很棒啊,我就是看不懂英文,有人翻译就是太棒了。
谢谢提供的资料!有价值!
质量真的很好,趁着GGJ之前刷一波,以免坑队友~
赞! 感谢楼主 & 要是有3d的视频就更好了
感谢整理分享!
感谢整理、分享,谢谢!
2d 更新确实没那么给力啊。还是爱 2d。
谢谢分享!b站上看过一些视频,没想到这里也能遇见~~~
不错收藏了
确实2d方面很缺一个官方自带的寻路,用A*还是不太方便。如果能和navmesh一样,直接可以设定地图和障碍物,那就很方便了
新人加入,,自学UNITY中,感谢分享,,,
非常感谢!

我要回帖

更多关于 unity2d 的文章

 

随机推荐