在统一编辑器中,当我启用“枢轴”时,游戏对象将围绕“枢轴点”位置旋转,当我启用“中枢”时,游戏对象将围绕“中心点”旋转
但是如果我使用脚本旋转,它将始终围绕“中心点”旋转,例如,这是我的场景:
我使用以下代码:
void Start()
{
// transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90));
transform.RotateAround(transform.position, new Vector3(0, 0, 1), 90);
}
围绕“中心点”旋转
如果对象具有对撞机,我可以通过colider.bounds获取枢轴点,如果没有,我该怎么办?
更糟糕的是,在某些情况下,我希望旋转为就像在统一编辑器检查器中设置旋转一样,我使用以下代码:
transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90))
我不知道要调整上面的代码以绕枢轴点旋转
更新
我认为,如果我可以“旋转”,也可以暗示“旋转到”,那么关键是,我应该如何获取RotateAround中使用的“枢轴点”,以使对象具有对撞机,我可以colider.bounds与transform.position绑定,没有碰撞对象,该怎么办?
答案 0 :(得分:3)
枢轴点与您正在使用的transform.position
相同。如果您不喜欢枢轴的位置或旋转所针对的位置,则有两种选择:
1 。创建新的空GameObject。将其移动到您要GameObject旋转的位置。一旦对该位置感到满意,请将这个新的GameObject设为您将要旋转的GameObject的子代。使用此新GameObject的位置作为transform.RotateAround
函数的枢轴旋转点。
将空的GameObject拖到下面脚本中的customPivot
插槽中。那应该给您一个新的枢轴点来旋转您的GameObject。
public Transform customPivot;
void Update()
{
transform.RotateAround(customPivot.position, Vector3.up, 20 * Time.deltaTime);
}
2 。打开3D应用程序并更改对象的轴心点,然后保存并将其重新导入到Unity中。
由于这只是用于旋转对象,因此建议#1 。如果问题是枢轴点未居中,则建议使用#2 。