在unity2d中网格捕捉时,如何检查gameObject



我正在尝试制作一个游戏,该游戏可以通过在网格上捕捉到的对象,我已经想出要将它们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[] hitsPhysics2D.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
                } 

相关内容

  • 没有找到相关文章

最新更新