目录
1. 引出问题
最近在尝试向 2D 的方向上学习。学习过程中,碰到了一个问题:如何让玩家在 2D 场景中与 GameObject 交互?也就是说,我在屏幕上点击这个方块(在 Unity 中称为 Sprite),然后这个 Sprite 知道玩家在触碰自己。
2. 解决思路
现今比较普遍的做法:
- 获取屏幕中的 2 维坐标 (x, y)
- 通过摄像机的属性,把 (x, y) 转换为从摄像机发射出来的一条射线
- 若射线射中了某一个 Sprite 的碰撞盒( Collider ),就判断用户触碰这个 Sprite
- 根据这个判断条件,决定是否执行 Sprite 的响应
有了思路就可以把思路转换为代码。至于详细代码是什么样的,上网稍微搜索一下 “Unity 拾取” 基本上就有详细过程。而本文章主要内容并不是讲通过手写代码来实现 2D Sprite 的拾取,而是使用一个更加便捷易懂的方式来取代手写代码。
3. 新的入口点
在讲述 2D Sprite 拾取之前,我们先回想一下,Unity 有哪些自带的控件有拾取的属性。第一时间让人想到的是 UGUI 的 Button。