3

Unity3D (Orthello 2D を使用) で 2D ゲームに取り組んでいます。

Cocos2d と CoronaSDK から切り替えたので、Corona で動作するスプライト (または任意の Unity3D オブジェクト) に対して次の動作を実装する方法があるかどうか疑問に思っています。

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

したがって、スプライトは 1 秒間に 100 度回転します。

スプライトに添付されたスクリプトでは、関数で回転を行うことができますが、Update ()それは少し異なるアプローチです...

4

2 に答える 2

1

Update 関数で簡単に実行できます。

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 度回転する必要がある場合は、タイマーをリセットするだけです。

Rotate 関数の別のバージョンはこちらTime.deltaTimeで、ライフセーバー値の詳細はこちらで確認できます。

于 2017-03-18T01:33:37.847 に答える
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);
  }
}
于 2013-09-28T17:55:45.537 に答える