unity3d - 在 Unity 3D 中旋转对象

标签 unity3d 3d rotation accelerometer

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

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

但我想旋转对象,例如屏幕正在旋转 - 0、90、180 和 360 度。我如何使用 Unity 3D 做到这一点?

最佳答案

您可以使用 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 度。

关于unity3d - 在 Unity 3D 中旋转对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28648071/

相关文章:

function - 在 CG Shader 中为 unity3d 的两个 channel 共享一个函数

c# - 运行时 Unity3D C# 方向改变不起作用

javascript - 从对象面 Three.js 中检索纹理贴图坐标

python - 如何找到两个凸包的交集?

javascript - 动画结束时执行动画

uiviewcontroller - UIModalPresentationCurrentContext - 未调用旋转方法

android - Cardboard的YouTube视频流(统一)

c# - “The name '来源' does not exist in the current context [Assembly-CSharp]”,

c++ - FBX节点变换计算

rotation - 如何在three.js中为相机设置动画以查看对象?