我正在创建类似于 Valheim 的基础建筑系统,但我在将对象与自身对齐时遇到问题。我希望能够在我的相机正在寻找的位置放置具有不同旋转的物体,并使它们粘在其他物体上,就像在经典的基础建筑系统中一样。
我尝试根据网格渲染器边界大小确定需要将对象从光线投射命中点移动的距离,如下所示:
visualization.transform.postion = currentHit.point + Vector3.Scale(visualization.Bounds.extents, currentHit.normal.normalized);
有没有办法在不使用边界的情况下根据渲染器/碰撞器大小和对象旋转来了解距离?
Bounds
的问题通常是它们与世界对齐(参见例如 MeshRenderer 在旋转时有错误的边界)
Physics.CalculatePenetration
如果函数返回
true
,则按方向 * 距离平移第一个碰撞器将分离碰撞器。否则,方向和距离未定义。
这意味着您首先要检查块是否重叠,例如使用
OnCollisionEnter
,然后可以使用 Physics.CalculatePenetration
来分离方块,并将您移动的方块“卡”到与其碰撞的方块之外