动画比例导致使用Rigidbody2D停止运动并在重力中插值

时间:2015-02-22 23:21:23

标签: animation unity3d unity3d-2dtools itween leantween

我在一个带有刚体的物体上使用缩放动画遇到了一个问题。 LeanTween和iTween都会出现此问题。动画每秒钟运行三分之一秒,当刚体在重力作用下移动时,动画似乎在动画中停止。

将以下脚本添加到Sprite中,添加Rigidbody2D,将Rigidbody上的Interpolate设置为" interpolate",并将重力设置为0.2以便于查看:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class TestLeanTween : MonoBehaviour {
    void Start () {
        StartCoroutine(this.Grow());
     }

    private IEnumerator Grow() {
        float scale = 0.2f;
        while (true) {
            yield return new WaitForSeconds(0.7f);
            scale += 0.1f;
            LeanTween.scale (this.gameObject, new Vector3(scale, scale, 1), 0.3f);
        }
     }
}

将Sprite放在屏幕顶部并启动游戏。当对象落下时,向下运动将在缩放动画激活时反复暂停。如果插值设置为"外推",在缩放动画期间精灵将更快

可能导致此行为的任何想法?

2 个答案:

答案 0 :(得分:0)

正如Unity - Manual: Rigidbody

中所述
  

使用物理时更改变换可能会导致碰撞和其他计算出现问题。

另请阅读上述链接中的使用正确尺寸部分。

当您更改GameObject的比例时,它会影响游戏中RigidBody / Physics的计算。

可能的方法:

创建一个空的GameObject并将RigidBody和colliders附加到它上面。添加你的对象' (您想要应用动画的那个)作为新游戏对象中的子项(在将其作为子项添加后从您的对象中删除RigidBody和对撞机,否则可能会导致进一步的问题)。完成后,现在为子对象的比例设置动画,只留下父对象(具有RigidBody组件)。

答案 1 :(得分:0)

您只能缩放网格,而无需缩放其他组件。这将解决您的问题。 (注意克里特空子对象)