chi*_*nce 3 c# unity-game-engine
在统一编辑器中,当我启用“枢轴”时,游戏对象将围绕“枢轴点”位置旋转,当我启用“中心”时,游戏对象将围绕“中心点”旋转
但是如果我使用脚本旋转,它总是围绕“中心点”旋转,例如,这是我的场景:
我使用以下代码:
void Start()
{
// transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90));
transform.RotateAround(transform.position, new Vector3(0, 0, 1), 90);
}
Run Code Online (Sandbox Code Playgroud)
它围绕“中心点”旋转
如果对象有对撞机,我可以用 colider.bounds 获得枢轴点,如果没有,我该怎么办?
更糟糕的是,在某些情况下,我希望旋转像在统一编辑器检查器中设置旋转一样,我使用以下代码:
transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90))
Run Code Online (Sandbox Code Playgroud)
我不知道调整上面的代码以围绕枢轴点旋转
更新
我想如果我可以“旋转”,我也可以实现“旋转到”,所以关键是,我应该如何获得在 RotateAround 中使用的“枢轴点”,对象有碰撞器,我可以使用 colider.bounds使用transform.position,没有碰撞对象,我该怎么办?
枢轴点与transform.position您已经使用的相同。如果您不喜欢枢轴点所在的位置或旋转所针对的位置,您有两种选择:
1 . 创建新的空游戏对象。将其移动到您希望 GameObject 旋转的位置。一旦对那个位置感到满意,就让这个新的 GameObject 成为你将围绕它旋转的 GameObject 的子级。使用这个新游戏对象的位置作为transform.RotateAround函数的枢轴旋转点。
将空的 GameObject 拖到customPivot下面脚本中的插槽中。这应该会给你一个新的枢轴点来旋转你的游戏对象。
public Transform customPivot;
void Update()
{
transform.RotateAround(customPivot.position, Vector3.up, 20 * Time.deltaTime);
}
Run Code Online (Sandbox Code Playgroud)
2 . 打开 3D 应用程序并更改对象的枢轴点,然后保存并将其重新导入 Unity。
由于这仅用于旋转对象,我建议#1。如果问题是枢轴点未居中,我建议#2。
| 归档时间: |
|
| 查看次数: |
9950 次 |
| 最近记录: |