如何在Unity中更改对象的枢轴点

5

我有一个问题。我想把物体的枢轴点放在物体的末端而不是中心。这是为了我创建的人工智能,我需要一个无形的矩形来观察玩家,这样我就可以检测是否有障碍物 - 我已经使用了射线投射,但有时在某些角度下,射线无法感知到障碍物,因此我需要无形的矩形。然而,问题是由于它围绕自身的中心旋转而不是末端,有时矩形会从后面捡起障碍物。它看起来像这样:

enter image description here

顺便说一下,我正在使用C#。

我用的代码是用来让矩形朝向玩家的:

transform.LookAt(player.transform.position);

那么,使用我拥有的代码,我如何使矩形的枢轴点在其末尾,以便矩形不会捕捉到其后面的碰撞。

print("所有帮助都受到赞赏!");

:D

编辑:

我按照Zackary的说法做了,它运行得很好,只是它是反向的 - 我该怎么办?

enter image description here


1
将矩形设为一个空游戏对象的子对象。将矩形与空游戏对象偏移,使得空游戏对象成为你想要的枢轴点。旋转空游戏对象而不是矩形的游戏对象。 - Leo Bartkus
谢谢,您能把这个变成答案吗?这样我就可以接受您的努力了。 - BeastCoder
2个回答

8
有两种常用的方法:定义自己的几何形状和锚点。
1. 定义自己的几何形状
如果你熟悉模型构建软件(例如Maya或Blender),它们通常支持工具,允许您指定几何形状的中心点。将这些模型导入Unity,我认为会保留这些中心点。
2. 锚点
也许最简单的方法是使用锚点对象。只需创建一个空对象作为要旋转的模型的变换父级,适当地从锚点平移子对象,并将最初应用于锚点对象(而不是子对象)的任何变换应用于锚点对象。

1
尝试否定矩形的相对位置。乍一看,似乎你把矩形放在敌人的背面(使得敌人看起来面向后方)。编辑:我把我的矩形和敌人搞反了。 - Zackary

0

很遗憾,在Unity中,直接修改实际的枢轴点是不可能的。我知道这真的很烦人,也是我一直想在Unity中实现的功能。因此,我决定为此创建一个编辑器工具。

你可以在这里尝试我的资产:

https://assetstore.unity.com/packages/tools/utilities/pivot-modder-152501

它允许您方便地从Unity编辑器内修改枢轴位置和旋转,还为您提供了各种有用的选项,如枢轴捕捉,使您能够更精确地操作枢轴。它也完全适合检查器中,无需添加组件或从编辑器打开窗口。


2
在这里自我推销你正在销售的东西似乎有些不合适。 - Shaun Dreclin
我同意@ShaunDreclin的观点。请注意,商店中还有其他多个免费提供此功能的资产。 - Michael Sander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接