京城游戏人-Day10: 2D 游戏中手机/PC 的单次触摸/点击
-
- 作者:大锐哥
- 地址:http://blog.csdn.net/prevention
-
基本方法
- 创建一个 Sprite
- 给这个 Sprite 添加 Box Collide 2D 的组件
- 创建一个 Empty Object,命名为 GameController
- 创建一个名为 GameController.cs 的脚本,并添加到 GameController 上
- 编写脚本
以下脚本,包括处理 PC 鼠标点击和手机触摸屏点击。
public class GameController : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
if (Input.touchCount == 1 && Input.touches[0].phase == TouchPhase.Ended)
{
var hit = Physics2D.Raycast (Camera.main.ScreenToWorldPoint(Input.touches[0].position), Vector2.zero);
if (hit.collider != null)
{
hit.collider.gameObject.transform.Rotate (new Vector3(0, 0, 90));
}
}
if (Input.GetMouseButtonUp(0))
{
var hit = Physics2D.Raycast (Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
if (hit.collider != null)
{
hit.collider.gameObject.transform.Rotate (new Vector3(0, 0, 90));
}
}
}
}
常见问题
- 如果不给 Sprite 添加 Box Collide 2D,则无法识别点击
注意用 TouchPhase.Ended 和 GetMouseButtonUp 来判断点击结束。如果不看点击开始、结束,则会出现单次点击后,Sprite 连续转动多个 90 度的现象,读者们可以把代码做如下两个修改,感受下:
// 去掉下面这句 Input.touches[0].phase == TouchPhase.Ended // 修改下面这句 Input.GetMouseButton(0)
这里用的是射线判断方法,是一种非常常用的判断法
-
- 作者:大锐哥
- 地址:http://blog.csdn.net/prevention
-