Animation 在Unity3d中设置旋转动画

Animation 在Unity3d中设置旋转动画,animation,unity3d,transitions,Animation,Unity3d,Transitions,我正在Unity3D中制作一个2D游戏(使用Ortherlo 2D) 由于我从Cocos2d和CoronasSDK切换过来,我想知道是否有一种方法可以实现sprite(或任何Unity3D对象)在Corona中工作时的以下行为: object = ... transition.to ( object, { time = 1000, rotation = object.rotation + 100, onComplete = function () // do something end

我正在Unity3D中制作一个2D游戏(使用Ortherlo 2D)

由于我从Cocos2d和CoronasSDK切换过来,我想知道是否有一种方法可以实现sprite(或任何Unity3D对象)在Corona中工作时的以下行为:

object = ...
transition.to ( object, { time = 1000, rotation = object.rotation + 100, onComplete = function () 
    // do something
end })
所以精灵在1秒内旋转100度


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

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

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);
  }
}

您可以在更新函数中轻松完成此操作

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;
    }
}
float定时器=0f;
无效更新()
{

如果(Unity有几种插值实用程序,如iTween和GoKit。我想如果你在谷歌上搜索它们,你会找到做这类事情的示例/教程。如果你想编写自己的插值,Unity在对象上也有一系列Lerp/Slerp函数。谢谢!我想我会先试试iTween。iTween有一个很好的简单语法,但据说GoKit的性能更好,因此,如果您正在编写一些在移动设备上进行大量tween操作的内容,您可能需要在某个时候进行切换。如果您在Unity Asset Store中搜索“tween”,您将看到其他一些解决方案。