【发布时间】:2020-11-11 10:45:18
【问题描述】:
我有一个由一堆方形瓷砖制成的棋盘,我有一个圆形的玩家,我想放下瓷砖并将盘子位置设置到最近的瓷砖的中心,同时鼠标按钮向上; 没有 Canvas 和 EventSystem 有什么方法可以解决这个问题?
【问题讨论】:
标签: c# unity3d drag-and-drop
我有一个由一堆方形瓷砖制成的棋盘,我有一个圆形的玩家,我想放下瓷砖并将盘子位置设置到最近的瓷砖的中心,同时鼠标按钮向上; 没有 Canvas 和 EventSystem 有什么方法可以解决这个问题?
【问题讨论】:
标签: c# unity3d drag-and-drop
有几种方法可以做到,
您可以将所有图块存储在一个数组中,并在拖动播放器时检查最近的图块的位置,如果图块之间有间隙并且希望玩家仍然捕捉到图块,即使玩家并没有通过设置阈值来克服它,但如果你有数千个图块并且你正在遍历它们,它可能会有点昂贵。
第二个也是最简单的方法是直接将 Raycast 从您的玩家投射到您的瓷砖所在的平面上,击中时只需将玩家定位在瓷砖的中间。如果场景中有更多对象,您还可以使用“Tile”等标记瓷砖并在光线投射中检查标记。这里记录了光线投射的使用https://docs.unity3d.com/ScriptReference/Physics.Raycast.html
【讨论】: