Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 不使用画布的Unity 2D拖放_C#_Unity3d_Drag And Drop - Fatal编程技术网

C# 不使用画布的Unity 2D拖放

C# 不使用画布的Unity 2D拖放,c#,unity3d,drag-and-drop,C#,Unity3d,Drag And Drop,我有一块由一堆方形瓷砖组成的板,我有一个圆形的播放器,我想在鼠标按下的同时,将平板放置在最近瓷砖的中心; 没有Canvas和EventSystem,有什么方法可以解决这个问题吗?有几种方法可以做到这一点 您可以将所有磁贴存储在一个数组中,当拖动播放器时,检查最近磁贴的位置,如果您在磁贴之间有间隙,并且希望播放器仍然捕捉到磁贴,即使通过设置阈值,播放器未超过该磁贴,这将非常有效,但是,如果您有数千个tile,并且正在对它们进行迭代,那么它可能会有点昂贵 第二种,最简单的方法是从你的玩家直接投射到你

我有一块由一堆方形瓷砖组成的板,我有一个圆形的播放器,我想在鼠标按下的同时,将平板放置在最近瓷砖的中心;
没有Canvas和EventSystem,有什么方法可以解决这个问题吗?

有几种方法可以做到这一点

您可以将所有磁贴存储在一个数组中,当拖动播放器时,检查最近磁贴的位置,如果您在磁贴之间有间隙,并且希望播放器仍然捕捉到磁贴,即使通过设置阈值,播放器未超过该磁贴,这将非常有效,但是,如果您有数千个tile,并且正在对它们进行迭代,那么它可能会有点昂贵


第二种,最简单的方法是从你的玩家直接投射到你的瓦片所在的平面上,在击中的位置上,玩家在瓦片的中间位置。如果场景中有更多对象,还可以使用例如“Tile”标记瓷砖,并在光线投射中检查标记。光线投射的使用在这里有记录(你:),我看到了一些关于物理的东西。光线投射这个功能只用于3d对象及其坐标系,所以它适用于2d游戏对象吗?是的,你是对的,你需要碰撞器,但对于方形瓷砖,它应该非常简单。说到2d,Unity 2d workspace只不过是一个3d空间,您可以将播放器的(通常是Z)值更改为高于平铺的值,然后向下投射光线投射。