注册点击并按住Unity中的瓷砖



我有一个程序生成的tilemap,玩家可以通过鼠标点击进行交互。每次播放器点击时,我都会得到它的屏幕位置,将其转换为世界线并找到正确的磁贴。这很好,但只适用于单次单击,并且不知道要连续按住鼠标。

我正试图弄清楚如何拥有一个像点击保持这样的定时系统,Minecraft和Terraira都有每个区块/瓦片的中断进度的想法,这正是我真正想要的。

任何人都知道如何跟踪它,并在玩家释放鼠标时重置它。

不要在指针下降时进行自己的光线投射,然后调用交互方法,而是为每个实现IPointerDownHandler、IPointerExitHandler和IPointerUp处理程序的瓦片添加一个单一行为。确保场景中有一个事件处理程序,活动相机上有一个physicsRaycaster!

OnPointerDown->将时间戳设置为time.unscaledTime

OnPointerExit->将时间戳重置为-1或其他任何值(一些宗教编码者更喜欢可为null的浮点值,因此将其设置为null(,以取消交互

OnPointerUp->如果您的计时器&gt-1(或NOT null(,检查time.unscaledTime-您的时间戳>您的时间阈值,如果是->调用您的交互方法。重置计时器

当然,可以添加更多的逻辑。

编辑:从你的评论中,因为你不想有每个磁贴的逻辑,相反,当你点击时,保存"在屏幕位置的世界位置点击"的磁贴,当鼠标放下时,检查(以某种频率,每帧或每隔几毫秒(,如果指针仍然在同一磁贴上。如果是这样,请保持计时器运行,否则请重置计时器。如果计时器过期,您的交互可能会开始。如果指针向上,则重置

最新更新