【Unity】控制模型单向缩放

最近在做项目,遇到了一个问题,储水罐中的水,怎样让它不断的增长,看起来像真的一样

这个问题想了好久,最开始是想用粒子,然后找了几个插件,发现粒子太耗费资源,想了很久之后想到了一个好办法,直接一个贴图贴到圆柱上,然后控制圆柱的单方向生长如何?

想到就去做,拉了一个模型圆柱,然后找了张图,开始缩放。

结果遇到了一个不是问题的问题:正常缩放模型是两边都在扩大,怎么变成单独方向的缩放呢?

这边百度了一下大佬们的经验,看到了一个,感觉写的挺不错的。

大佬是利用改变scale和position来进行单方向的缩放,哦,对,是改变了大小之后,用坐标改变的方式让其看起来像是在原地缩放,很奇妙的想法,然后我在这个基础之上修改了一下,然后就可以愉快的玩耍了。

/// <summary>
/// 控制模型向一个方向生长
/// </summary>
public class GameCro : MonoBehaviour
{
    private GameObject obj;

    float lox;//大小
    float posx;//坐标

    // Start is called before the first frame update
    void Start()
    {
        obj = GameObject.Find("Cube");

        lox = obj.transform.localScale.x;//大小

        posx = obj.transform.position.x;//坐标
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.Q))//增长
        {
            if (lox < 10f)
            {
                lox += 0.05f;
                posx -= 0.025f;
                obj.transform.localScale = new Vector3(lox, obj.transform.localScale.y, obj.transform.localScale.z);
                obj.transform.position = new Vector3(posx, obj.transform.position.y, obj.transform.position.z);
            }
        }
        if (Input.GetKey(KeyCode.E))//减少
        {
            if (lox > 1f)
            {
                lox -= 0.05f;
                posx += 0.025f;

                obj.transform.localScale = new Vector3(lox, obj.transform.localScale.y, obj.transform.localScale.z);
                obj.transform.position = new Vector3(posx, obj.transform.position.y, obj.transform.position.z);
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/CSDN_6954/article/details/124985007
今日推荐