【问题标题】:Changing the animation values via script in Unity在 Unity 中通过脚本更改动画值
【发布时间】:2020-08-29 08:57:30
【问题描述】:

我搜索了不同的来源,但找不到我直接需要的东西。我在场景中使用主摄像头,当满足某些条件时,我希望我的摄像头动画到我将从场景中的对象获得的点。我尝试使用动画曲线,但并没有完全按照我想要的方式工作。所以我想到了改变动画键的值。有没有办法我可以改变键,同时动画会按照我想要的方式制作动画。

【问题讨论】:

  • 听起来你不想使用动画系统来处理这种行为......我们需要更多关于应该发生什么以及如何发生的细节,但你可能最好使用 协程Vector3.LerpQuaternion.SlerpVector3.MoveTowards 等类似的东西

标签: unity3d


【解决方案1】:

我认为动画不是您想要的。我强烈建议您使用补间资产或编写自己的补间库。这是一个将移动您的对象的示例推文代码:

private void Start()
{
    StartCoroutine(Move(5));
}

private IEnumerator Move(float duration)
{
    var startPos = gameObject.transform.position;
    var targetPos = new Vector3(0, 10, 0);

    var timer = 0f;

    while (timer < duration)
    {
        transform.position = Mathf.Lerp(startPos, targetPos, timer / duration);
        timer += Time.deltaTime;
        yield return null;
    }

    transform.position = targetPos;
}

这段代码将在duration 秒内将您的gameObject 移动到targetPos。我们这里所做的本质上叫做线性插值,意思是我们从起始值到结束值线性地改变一个值,timer / duration被称为插值值。插值必须介于 0 和 1 之间,其中输入 0 将为您提供起始值,输入 1 将为您提供结束值。您可以平滑此插值以获得更平滑的运动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 2023-02-07
    • 1970-01-01
    • 2021-07-02
    • 2015-12-13
    • 2016-07-08
    • 1970-01-01
    相关资源
    最近更新 更多