c# - 不使用 Canvas 的 Unity 2D 拖放
问题描述
我有一块用一堆方形瓷砖制成的棋盘,我有一个圆形的玩家,我想放下瓷砖并将盘子位置设置到最近的瓷砖的中心,同时鼠标按钮向上;有没有办法在没有 Canvas 和 EventSystem 的情况下处理这个问题?
解决方案
有几种方法可以做到,
您可以将所有图块存储在一个数组中,并且在拖动播放器时检查最近的图块的位置,如果图块之间有间隙并且希望玩家仍然可以捕捉到图块,即使玩家不是通过设置阈值来克服它,尽管如果您有数千个图块并且您正在遍历它们,它可能会变得有点昂贵。
第二个也是最简单的方法是直接将 Raycast 从您的玩家投射到您的瓷砖所在的平面上,击中时只需将玩家定位在瓷砖的中间。如果场景中有更多对象,您还可以使用“Tile”等标记瓷砖,并在光线投射中检查标记。此处记录了光线投射的使用https://docs.unity3d.com/ScriptReference/Physics.Raycast.html
推荐阅读
- c# - 从 .txt 文件填充和二维数组
- android - IndexOutOfBoundsException Editor.java 行 2182 仅适用于三星 Android 10
- laravel - 访问laravel中的入口页面
- python - 在 IPython 小部件中动态添加和删除列表项
- c# - 如何将选择查询放在 C# 中的列表中?我收到一个错误
- reactjs - react-slick carousel CSS,“编译失败”错误
- c - sscanf 不读取数字
- html - 调整弹性容器的大小时,如何使内部带有画布的 div 缩小?
- python - 如何正确读取特定的 csv 列
- css - 已处理的 SASS 文件缺少来自自定义 mixin 的供应商前缀