将一个游戏对象与另一个游戏对象对齐,用于基础构建系统,考虑基于光线投射命中的不同旋转

问题描述 投票:0回答:1

我正在创建类似于 Valheim 的基础建筑系统,但我在将对象与自身对齐时遇到问题。我希望能够在我的相机正在寻找的位置放置具有不同旋转的物体,并使它们粘在其他物体上,就像在经典的基础建筑系统中一样。

我尝试根据网格渲染器边界大小确定需要将对象从光线投射命中点移动的距离,如下所示:

visualization.transform.postion = currentHit.point + Vector3.Scale(visualization.Bounds.extents, currentHit.normal.normalized);

这仅适用于直角和直角,并且当存在不同旋转时会成为问题:

有没有办法在不使用边界的情况下根据渲染器/碰撞器大小和对象旋转来了解距离?

c# unity-game-engine game-physics game-development
1个回答
0
投票

Bounds
的问题通常是它们与世界对齐(参见例如 MeshRenderer 在旋转时有错误的边界

如果你有碰撞器,你可以使用

Physics.CalculatePenetration

如果函数返回 true,则按方向 * 距离平移第一个碰撞器将

分离
碰撞器。否则,方向和距离未定义。

这意味着您首先要检查块是否重叠,例如使用

OnCollisionEnter
,然后可以使用
Physics.CalculatePenetration
来分离方块,并将您移动的方块“卡”到与其碰撞的方块之外

© www.soinside.com 2019 - 2024. All rights reserved.