我正在尝试制作一款允许通过将对象捕捉到网格上来移动对象的游戏,我已经想出了将它们捕捉到网格上的方法,但是有一点点小问题,我想检查是否已经在同一对象上放置了游戏对象网格,这样我就不会让拖动的游戏对象捕捉到相同的位置,但事实是我有不同的游戏对象形状。
你自己看
我该如何实现?
由于您位于正方形网格上,所以我认为最好的方法是使用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。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句