在 Unity 3D 中旋转对象

Posted

技术标签:

【中文标题】在 Unity 3D 中旋转对象【英文标题】:Rotate object in Unity 3D 【发布时间】:2015-02-21 16:25:21 【问题描述】:

我可以使用以下代码使用加速度计旋转对象。

transform.rotation = Quaternion.LookRotation(Input.acceleration.normalized, Vector3.up);

但我想旋转对象,例如屏幕旋转 - 0、90、180 和 360 度。如何使用 Unity 3D 来实现?

【问题讨论】:

【参考方案1】:

你可以像这样使用transform.rotation

transform.rotation = new Quaternion(rotx, roty, rotz, rotw);

你可以像这样使用transform.Rotate

transform.Rotate(rotx, roty, rotz);

Documentation for Quaternion

Documentation for transform.rotation

带有加速度计输入的旋转屏幕示例:

float accelx, accely, accelz = 0;

void Update ()

    accelx = Input.acceleration.x;
    accely = Input.acceleration.y;
    accelz = Input.acceleration.z;
    transform.Rotate (accelx * Time.deltaTime, accely * Time.deltaTime, accelz * Time.deltaTime);

如果要将对象旋转到特定角度,请使用:

float degrees = 90;
Vector3 to = new Vector3(degrees, 0, 0);

transform.eulerAngles = Vector3.Lerp(transform.rotation.eulerAngles, to, Time.deltaTime);

这将围绕 x 轴旋转 90 度。

【讨论】:

我没有足够的声誉来发布超过 2 个链接,但只是谷歌转换。如果您也需要阅读一些相关文档,请旋转。 它仍然没有给我解决这个问题的方法。我不明白你的解释。 说明你到底想做什么 “示例屏幕正在旋转 - 0、90、180 和 360 度”在哪个轴(x、y 或 z)上?使用加速度计输入? 如前所述,我想使用加速度计自动旋转场景中的一个对象。你知道屏幕自动旋转是如何工作的吗?我想对场景中的一个对象做同样的事情。【参考方案2】:

为了自己旋转你的游戏对象

int _rotationSpeed = 15;

void Update () 

    // Rotation on y axis
    // be sure to capitalize Rotate or you'll get errors
    transform.Rotate(0, _rotationSpeed * Time.deltaTime, 0);

【讨论】:

【参考方案3】:

如果您希望将此添加到游戏对象中,您可以将游戏对象放入脚本中:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TheNameOfYourScriptHere : MonoBehaviour

    public float speed = 100;
    
    public GameObject yourgameobject;
    
    void Update()
    
          yourgameobject.transform.Rotate(0, speed * Time.deltaTime, 0);
    

请注意,这种旋转速度更快,因此您可以更好地看到它的实际效果。

【讨论】:

【参考方案4】:

您可以通过在 .cs 脚本中添加以下行来旋转对象。

transform.Rotate(Vector3.up,这里可以放水平速度);

【讨论】:

以上是关于在 Unity 3D 中旋转对象的主要内容,如果未能解决你的问题,请参考以下文章

用于在 Unity3D 中定位 3D 对象的 OpenCV 旋转(Rodrigues)和平移向量

使用四元数的Unity3D相对偏移对象旋转

如何旋转对象沿着矢量Unity3D指向

unity3d 如何让子对象的顺序改变?

unity 3d实例:创建游戏对象旋转的立方体Unity3D Button图片按钮Box控件Label控件Background ColorColor

Unity3D中的对象不以直角看其他对象