仅在一侧缩放游戏对象

Scale gameobject on just one side

我已将立方体添加到场景中并缩放并放置到位置 ( 0, 0, 0 )。 我正在使用附加到 Cube

的代码缩放该 Cube
IEnumerator Start() {
    StartCoroutine("DoSomething", 2.0F);
    yield return new WaitForSeconds(1);
    StopCoroutine("DoSomething");
}

IEnumerator DoSomething(float someParameter) {
    while (true) {
        transform.localScale += new Vector3(0, 0.1f, 0);
        yield return null;
    }
}

但立方体在两侧缩放,顶部和底部。我想用相同的系数缩放,但立方体的底部保持在相同的位置。 我试图在 transform.localScale += new Vector3(0, 0.1f, 0);yield return null; 之间设置新位置,但我不知道如何获得确切数量。 (我试着阅读

Mesh planeMesh = gameObject.GetComponent<MeshFilter>().mesh;
        Bounds bounds = planeMesh.bounds;
        bounds.size.y;

缩放前后并添加到

transform.position.y之间的区别 boundsAfter.size.yboundsBefore.size.y

但是动作太大了

如何解决这个问题?

您实际上可以通过两种方式做到这一点。

方法一:

从外部应用程序更改枢轴点。

在Maya等3D软件中创建一个简单的立方体,然后将轴心点定位到立方体的底部,然后将其导出到Unity。这应该开箱即用。

方法 2:

将立方体作为空游戏对象的父级。

步骤

A。创建一个空的游戏对象。

B。将新游戏对象移动到立方体的位置,然后将新游戏对象的 y 轴移动到立方体的底部。必须通过放大来精确定位 y 坐标。有关详细信息,请参见下面的动画。

C。现在将 Cube 拖到那个新的 GameObject,立方体应该是 child 那个新的游戏对象。您现在可以将问题中的脚本附加到那个新的 GameObject 并且它应该只在一侧缩放立方体。不要忘记删除直接附加到多维数据集的旧缩放脚本。

图像教程。高质量版本 here.

您可以使用 Slider 来达到目的。我正在设计一个加载栏,我需要根据正在进行的下载增加加载器的宽度。您可以禁用它的句柄,并使用自定义 Sprite 来加载填充百分比。您还可以使用自定义 Sprite 作为背景。要使用 Slider,请转到菜单栏 -> GameObject -> UI -> Slider。或者您可以从检查器中为您想要的 GmaeObject 添加一个滑块组件(Select 您要添加滑块的游戏对象 -> 在检查器中单击添加组件 -> UI -> 滑块。现在设置填充矩形和其他选项)。您可以将滑块设置为从左到右、从右到左、从下到上或从上到下。

在脚本中

using UnityEngine.UI;
public class SliderExample : MonoBehaviour
{
    public Slider slider;  // Drag and Drop Slider GameObject in Unity Inspector
    float percentageCompleted;

    void Update()
    {
        slider.value = percentageCompleted;  
        // specify percentage Completed, if required Divide by 100 as Slider values are from 0 to 1 or set Max Value in Inspector as 100
    }
}

您还可以观看此 Brackeys 视频以获取有关设置滑块“https://www.youtube.com/watch?v=YMj2qPq9CP8”的一些帮助。