【问题标题】:How to simultaneously move and scale 3D object at runtime in Unity?如何在 Unity 运行时同时移动和缩放 3D 对象?
【发布时间】:2018-06-17 16:42:25
【问题描述】:

我需要在运行时在 Unity 中移动缩放 3D 对象。

我可以这样移动它:

void Update(){

public Transform target_1;
float relocationSpeed = 10;
float step = relocationSpeed * Time.deltaTime;

MyObject.transform.position = Vector3.MoveTowards (MyObject.transform.position, target_1.position, step);
}

我可以像这样使用协程来扩展它:

float scaleSize = 20;

IEnumerator ScaleUpMyObject(){

        for (var i = 0; i < scaleSize; i++) {

            MyObject.transform.localScale += new Vector3 (1, 1, 1);
            yield return new WaitForSeconds(0.1f);

        }
}

但是同时移动和缩放我的对象的最佳方式是什么?

谢谢!

【问题讨论】:

    标签: c# animation unity3d coroutine


    【解决方案1】:

    在不更改太多原始代码的情况下,您可以执行以下操作

    public Vector3 wantedSize = new Vector3(5, 5, 5);
    void Update()
    {
        float relocationSpeed = 10;
        float step = relocationSpeed * Time.deltaTime;
    
        MyObject.transform.position = Vector3.MoveTowards(MyObject.transform.position, target_1.position, step);
        MyObject.transform.localScale = Vector3.MoveTowards(MyObject.transform.localScale, wantedSize, step);
    }
    

    【讨论】:

    • 非常感谢,我去测试一下!另外,如果您的意思是有比我的代码更好的方法,我将不胜感激您的建议!
    【解决方案2】:

    你可以使用动画师,这是一个例子。

    Unity 3D object animation example

    您还可以使用 iTween 之类的库(在资产商店免费)来为位置和比例矢量设置动画,也有过渡选项,让您不仅可以线性平移(在四边形、反弹、指数中缓入和缓出)等)。

    Unity Asset Store - iTween

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多