首页 > 解决方案 > 不使用 Canvas 的 Unity 2D 拖放

问题描述

我有一块用一堆方形瓷砖制成的棋盘,我有一个圆形的玩家,我想放下瓷砖并将盘子位置设置到最近的瓷砖的中心,同时鼠标按钮向上;有没有办法在没有 Canvas 和 EventSystem 的情况下处理这个问题?

标签: c#unity3ddrag-and-drop

解决方案


有几种方法可以做到,

您可以将所有图块存储在一个数组中,并且在拖动播放器时检查最近的图块的位置,如果图块之间有间隙并且希望玩家仍然可以捕捉到图块,即使玩家不是通过设置阈值来克服它,尽管如果您有数千个图块并且您正在遍历它们,它可能会变得有点昂贵。

第二个也是最简单的方法是直接将 Raycast 从您的玩家投射到您的瓷砖所在的平面上,击中时只需将玩家定位在瓷砖的中间。如果场景中有更多对象,您还可以使用“Tile”等标记瓷砖,并在光线投射中检查标记。此处记录了光线投射的使用https://docs.unity3d.com/ScriptReference/Physics.Raycast.html


推荐阅读