如何旋转物体平滑?

时间:2017-11-07 23:41:24

标签: c# unity3d

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityStandardAssets.Characters.FirstPerson;

public class RotateObject : MonoBehaviour
{
    public float turningRate = 1;

    void Awake()
    {
        fpcscript = transform.GetComponent<FirstPersonController>();
        fpcscript.enabled = false;
    }

    void Update()
    {
        transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, 0), turningRate * Time.deltaTime);
    }
}

使用Lerp让它旋转但旋转时有些口吃不太顺畅。

我也尝试过使用Quaternion.RotateTowards而不是Lerp,但它太慢而且不光滑。

2 个答案:

答案 0 :(得分:1)

我不确定你是在问一个特定的方式;虽然在unity3d中我创建了一种基本方法,因此您只需附加一个脚本并 设置值 。 在检查员中,它应该要求在[X,Y,Z]上旋转值。它使用time.deltaTime和基本 Vector ,允许 平滑旋转 。这是我能想到的最好的,因为我不确定你是否要求特定的方式,因为如果你这样做,我可能会提供帮助。

using UnityEngine;

public class RotateObject : MonoBehaviour
{
public float RotationSpeedX;
public float RotationSpeedY;
public float RotationSpeedZ;

public void Update()
{
    Vector3 RotationSPD = new Vector3(RotationSpeedX, RotationSpeedY, RotationSpeedZ);
    Rotate_Object(RotationSPD);
}
private void Rotate_Object (Vector3 Rotation_Speed)
{
    transform.Rotate(Rotation_Speed * Time.deltaTime);
  }
}

答案 1 :(得分:1)

transform.Rotate(Speed * Time.deltaTime); 使用这个api:Time.deltaTime会让它变得流畅。