我正在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 ()
函数中进行旋转,但这种方法有点不同......
答案 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度,你只需重置计时器。
的更多信息