【问题标题】:Animating scale causes halting motion with Rigidbody2D and interpolate in gravity动画比例导致 Rigidbody2D 停止运动并在重力中插值
【发布时间】:2015-02-22 23:21:22
【问题描述】:

我在刚体对象上使用缩放动画时遇到了问题。 LeanTween 和 iTween 都会出现此问题。动画每秒运行 1/3 秒,当刚体在重力作用下移动时,动画在动画期间似乎停止了。

将以下脚本添加到 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 放在屏幕顶部并开始游戏。当物体下落时,向下运动将在缩放动画处于活动状态时反复暂停。如果 interpolate 设置为“extrapolate”,则精灵将在缩放动画期间更快下落。

任何想法可能导致这种行为?

【问题讨论】:

    标签: animation unity3d unity3d-2dtools itween leantween


    【解决方案1】:

    Unity - Manual: Rigidbody中所述

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

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

    当您更改游戏对象的比例时,它会影响游戏中刚体/物理的计算。

    一种可能的解决方法:

    创建一个空的 GameObject 并将 RigidBody 和碰撞器附加到它上面。将您的“对象”(您要在其上应用动画的对象)添加为新 GameObject 中的子对象(将其添加为子对象后从对象中删除 RigidBody 和碰撞器,否则可能会导致进一步的问题)。完成后,现在为您的子对象的比例设置动画,让父对象(具有 RigidBody 组件)独自一人。

    【讨论】:

      【解决方案2】:

      您只能缩放网格,而不能缩放其他组件。这将解决您的问题。 (需要创建空子对象)

      【讨论】:

        猜你喜欢
        • 2023-01-11
        • 1970-01-01
        • 2015-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-10
        • 1970-01-01
        相关资源
        最近更新 更多