如何在Unity2D中进行网格捕捉时检查gameObject

这个狼

我正在尝试制作一款允许通过将对象捕捉到网格上来移动对象的游戏,我已经想出了将它们捕捉到网格上的方法,但是有一点点小问题,我想检查是否已经在同一对象上放置了游戏对象网格,这样我就不会让拖动的游戏对象捕捉到相同的位置,但事实是我有不同的游戏对象形状。

你自己看

点击查看图片

我该如何实现?

妈妈

由于您位于正方形网格上,所以我认为最好的方法是使用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
}

哪里snapToVector2你要捕捉到和位置boxSizeVector2等于一个网格位置(你可能需要摆弄这一点)的大小。最后两个参数0.0f指的是盒子的角度,我们不需要,因此只需将其设置为零即可,它Vector2.zero是投射的方向,但是我们在一个点上投射,所以这也没有关系。

我假设一次只能有一个游戏对象占据空间,所以只会有一次命中。如果有多个机会,可以将其更改为RaycastHit2D[] hitsPhysics2D.BoxCastAll然后检查是否hits.Length大于0。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Unity2d 中创建“交互式”网格?

如何按名称查找同级 GameObject;Unity2d C#

如何在UITextFieldDelegate中进行不同的检查

在将GameObject与Unity 3D拖动时,如何使用GameObject与BoxCollider 2D碰撞时如何检测碰撞

在 Unity2D 中,GameObject 被实例化,但在碰撞时不会触发它应该做的事情(有时)

您如何在 Unity 中进行协作?

如何在 Unity 中进行矢量加法

如何在Unity2D中以永久的速度移动角色

如何在Unity2D中使Sprite看到场景的中心?

如何在Unity2D中强制拖放对象

如何在 unity2D 的特定方向路径中移动我的游戏对象?

如何在Unity2D中改变玩家的水平移动方向?

如何在unity2D中为枪支制作射击场?

如何旋转(x,y)进行网格捕捉

Unity2D - 以网格状,定时方式移动 2D 对象

当Dictionary具有不同的数据类型时,如何在Python中进行类型检查

如何降低Unity2D中的实例化频率

Unity2D如何使Ai运行随机方向

Unity2D如何忽略与特定对象的碰撞?

如何使用Unity2D获得完整的HTML代码

Unity2D如何限制玩家跳跃

如何让 Unity2D 中的对象顺利交互?

Unity2D瓷砖网格渲染比源纹理更暗

如何在Unity中进行这种3D摄像机运动?

向上,向下,向左或向右滑动时,如何调用另一个类中的方法?Unity2D

在unity2d中如何在碰撞后向对象添加力,以模拟用蝙蝠击打棒球

如何在unity2D中移动相机的一侧添加生成器

如何在镜头中进行功能类型检查

如何在 Django 模型中进行格式检查