gpt4 book ai didi

c# - 在统一脚本中,如何围绕枢轴位置 "rotate"和 "rotate to"

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:02 28 4
gpt4 key购买 nike

在统一编辑器中,当我启用“Pivot”时,游戏对象将围绕“枢轴点”位置旋转,当我启用“Center”时,游戏对象将围绕“中心点”旋转

但是如果我使用脚本旋转,它总是围绕“中心点”旋转,例如,这是我的场景:

enter image description here

我使用以下代码:

    void Start()
{
// transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90));
transform.RotateAround(transform.position, new Vector3(0, 0, 1), 90);
}

它围绕“中心点”旋转

enter image description here

如果对象有对撞机,我可以用colider.bounds获取枢轴点,如果没有,我该怎么办?

更糟糕的是,在某些情况下,我希望旋转到就像在unity editor inspector中设置旋转一样,我使用以下代码:

transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90))

我不知道如何调整上面的代码来围绕轴心点旋转

更新

我想如果我可以“旋转”,我也可以实现“旋转到”,所以关键是,我应该如何获得 RotateAround 中使用的“枢轴点”,对象有碰撞器,我可以得到colider.bounds with transform.position,到没有collider object,怎么办?

最佳答案

枢轴点与您正在使用的 transform.position 相同。如果您不喜欢轴心点所在的位置或旋转所针对的位置,您有两个选择:

1。创建新的空游戏对象。将它移动到您希望游戏对象旋转的位置。一旦对该位置感到满意,就让这个新游戏对象成为您将围绕其旋转的游戏对象的子对象。使用这个新游戏对象的位置作为 transform.RotateAround 函数的轴心旋转点。

将空的 GameObject 拖到下面脚本中的 customPivot 槽中。这应该给你一个新的枢轴点来旋转你的游戏对象。

public Transform customPivot;

void Update()
{
transform.RotateAround(customPivot.position, Vector3.up, 20 * Time.deltaTime);
}

2。打开 3D 应用程序并更改对象的轴心点,然后保存并将其重新导入到 Unity 中。

因为这只是用来旋转对象,我建议#1。如果问题是枢轴点不居中,我会建议#2

关于c# - 在统一脚本中,如何围绕枢轴位置 "rotate"和 "rotate to",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52737303/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com