Unity3d中的动画旋转

时间:2013-09-27 15:54:34

标签: animation unity3d transitions

我正在Unity3D中使用2D游戏(使用Orthello 2D)。

自从我从Cocos2d和CoronaSDK切换后,我想知道是否有一种方法可以为精灵中的精灵(或任何Unity3D对象)实现以下行为:

object = ...
transition.to ( object, { time = 1000, rotation = object.rotation + 100, onComplete = function () 
    // do something
end })

所以精灵在1秒内旋转100度。

在附加到精灵的脚本中,我可以在Update ()函数中进行旋转,但这种方法有点不同......

2 个答案:

答案 0 :(得分:0)

有几种不同的方法可以做到这一点。例如使用协程:

IEnumerator TweenRotation(Transform trans, Quaternion destRot, float speed, float threshold )
{
  float angleDist = Quaternion.Angle(trans.rotation, destRot);

  while (angleDist > threshold)
  {
    trans.rotation = Quaternion.RotateTowards(trans.rotation, destRot, Time.deltaTime * speed);
    yield return null;

    float angleDist = Quaternion.Angle(trans.rotation, destRot);
  }
}

答案 1 :(得分:0)

您可以在更新功能中轻松完成。

float timer = 0f;

void Update()
{
    if(timer <= 1)
    {
// Time.deltaTime*100 will make sure we are moving at a constant speed of 100 per second
        transform.Rotate(0f,0f,Time.deltaTime*100);
// Increment the timer so we know when to stop
        timer += Time.deltaTime;
    }
}

如果你需要再旋转100度,你只需重置计时器。

您可以看到不同版本的旋转功能here以及有关救生员Time.deltaTimehere

的更多信息