只在一侧缩放游戏对象

时间:2016-08-29 23:02:48

标签: c# unity3d unity5

我已将Cube添加到场景中并且我缩放并放置到位置(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;
    }
}

但立方体在两侧,顶部和底部都有刻度。我想用相同的因子进行缩放,但是Cube的底部保持在相同的位置。 我试图在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

但是动作太多了。

如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

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

方法1

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

在Maya等3D软件中创建一个简单的多维数据集,然后将枢轴点定位到多维数据集的底部,然后将其导出Unity。这应该是开箱即用的。

方法2

将多维数据集生成一个空的GameObject。

<强>步骤

A 。创建一个空GameObject。

B 。将新GameObject移动到多维数据集的位置,然后将该新GameObject的y轴移动到多维数据集的底部。必须通过放大来精确定位y-pos。有关详细信息,请参阅下面的动画。

C 。现在将多维数据集拖动到新的GameObject,并且多维数据集应该是该新GameObject的。您现在可以将问题中的脚本附加到新的 GameObject ,它应该只在一侧缩放多维数据集。不要忘记删除直接附加到多维数据集的旧缩放脚本。

图像教程。高质量版本here

enter image description here

答案 1 :(得分:0)

您可以为此目的使用Slider。我正在设计一个加载栏,需要根据正在进行的下载来增加加载器的宽度。您可以禁用其句柄,并使用自定义Sprite加载填充百分比。您还可以将自定义Sprite用作背景。要使用Slider,请转到菜单栏-> GameObject-> UI-> Slider。或者相反,您可以从检查器中为所需的GmaeObject添加一个滑块组件(选择要添加滑块的GameObject->在检查器中,单击“添加组件-> 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”滑块的帮助。