Unity 2D 拾取 —— 代码量减少了

本文介绍了在Unity中实现2D场景中GameObject交互的问题,提出使用Unity的内置EventSystem和Physics 2D Raycaster代替手动编写拾取代码。通过创建Sprite,配置EventSystem和Raycaster,结合脚本接口响应事件,实现了2D拾取功能。
摘要由CSDN通过智能技术生成

目录

 

1. 引出问题

2. 解决思路

3. 新的入口点

4. 尝试

5. 测试


1. 引出问题

最近在尝试向 2D 的方向上学习。学习过程中,碰到了一个问题:如何让玩家在 2D 场景中与 GameObject 交互?也就是说,我在屏幕上点击这个方块(在 Unity 中称为 Sprite),然后这个 Sprite 知道玩家在触碰自己。


2. 解决思路

现今比较普遍的做法:

  1. 获取屏幕中的 2 维坐标 (x, y)
  2. 通过摄像机的属性,把 (x, y) 转换为从摄像机发射出来的一条射线
  3. 若射线射中了某一个 Sprite 的碰撞盒( Collider ),就判断用户触碰这个 Sprite
  4. 根据这个判断条件,决定是否执行 Sprite 的响应

有了思路就可以把思路转换为代码。至于详细代码是什么样的,上网稍微搜索一下 “Unity 拾取” 基本上就有详细过程。而本文章主要内容并不是讲通过手写代码来实现 2D Sprite 的拾取,而是使用一个更加便捷易懂的方式来取代手写代码。


3. 新的入口点

在讲述 2D Sprite 拾取之前,我们先回想一下,Unity 有哪些自带的控件有拾取的属性。第一时间让人想到的是 UGUI 的 Button。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值