[Unity] Escalado unidireccional del modelo de control

Recientemente, estaba trabajando en un proyecto y encontré un problema: ¿Cómo hacer que el agua en el tanque de almacenamiento crezca continuamente y se vea como si fuera real?

Pensé en este problema durante mucho tiempo. Al principio quería usar partículas, luego encontré algunos complementos y descubrí que las partículas consumen demasiados recursos. Después de pensar durante mucho tiempo, se me ocurrió una De buena manera, pegue directamente una textura en el cilindro y luego controle la dirección única del cilindro. ¿Cómo está creciendo?

Cuando lo pensé, lo hice, saqué un cilindro modelo, luego encontré una imagen y comencé a hacer zoom.

Como resultado, encontré un problema que no era un problema: el modelo de escala normal se expande en ambos lados, ¿cómo puede convertirse en una escala en una sola dirección?

Aquí, Baidu revisó la experiencia de los grandes, vio uno y sintió que la escritura era bastante buena.

El tipo grande usa cambiar la escala y la posición para hacer zoom en una dirección. Ah, sí, después de cambiar el tamaño, la forma de cambiar las coordenadas hace que parezca que está haciendo zoom en el lugar. Es una idea maravillosa. Entonces me basé en esto Modificado un poco arriba, y luego puedes jugar felizmente.

/// <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