我正在尝试制作一个游戏,该游戏可以通过在网格上捕捉到的对象,我已经想出要将它们snape snape snape to Grid,但我想检查一个小问题如果已经在同一网格上放置了一个游戏对象,这样我就不会让拖动的游戏对象捕捉到同一位置,但事实是我具有不同的游戏对象形状。
亲自见
单击查看图像
我该如何实现?
,由于您在方格网格上,所以我认为最好的方法是使用Physics2D.Boxcast((。基本上,您要做的是在移动游戏对象之前在快照矢量上投下盒子。
因此,在将游戏对象移至快照位置之前,请在您的代码中:
RaycastHit2D hit = Physics2D.BoxCast(snapTo, boxSize, 0.0f, Vector2.zero);
if (hit == null)
{
// We're clear to move
}
else
{
// Something is in the way
}
snapTo
是要捕捉到的位置的Vector2
,而boxSize
是一个等于一个网格位置的Vector2
(您可能需要对此进行一些操作(。最后两个参数0.0f
是指盒子的角度,我们不需要,因此将其设置为零,而Vector2.zero
是演员的方向,但是我们在一个位置施放,所以这也没关系。
我假设只有一个游戏对象可以一次占据空间,因此只有一个命中。如果有一个以上的机会,您可以将其更改为RaycastHit2D[] hits
和Physics2D.BoxCastAll
,请检查hits.Length
是否大于0。
我遇到了一些麻烦 physics2d.boxcast((,所以我使用 physics2d.overlapbox((很好。
isColl = Physics2D.OverlapBox(ObjectToMove.position, size, 0f, layerM);
if (isColl == true)
{
// Something is in the way
}
else
{
//Clear to go
}