【问题标题】:Unity 2D drag and drop without using Canvas不使用 Canvas 的 Unity 2D 拖放
【发布时间】:2020-11-11 10:45:18
【问题描述】:

我有一个由一堆方形瓷砖制成的棋盘,我有一个圆形的玩家,我想放下瓷砖并将盘子位置设置到最近的瓷砖的中心,同时鼠标按钮向上; 没有 Canvas 和 EventSystem 有什么方法可以解决这个问题?

【问题讨论】:

    标签: c# unity3d drag-and-drop


    【解决方案1】:

    有几种方法可以做到,

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

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

    【讨论】:

    • 坦克你:),我看到了一些关于 Physics.Raycast 的东西,这个函数只用于 3d 对象及其 coliders 所以它适用于 2d 游戏对象吗?
    • 是的,您是对的,您将需要碰撞器,但对于方形瓷砖,它应该非常简单。对于 2d,Unity 2d 工作区只不过是一个 3d 空间,您可以将玩家的(通常是 Z)值更改为高于图块的值,然后从它向下投射光线投射。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多