es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo modificar la altura de un Rect Transform mientras hago que parezca estar en la misma posición que antes en Unity?

Quiero cambiar la altura de un rect transform a través del código, pero quiero que parezca que está en la misma posición. La razón de esto es porque tengo una máscara que quiero aumentar lentamente de tamaño, pero solo hacia arriba (es decir, primero revela la parte inferior y luego continúa hacia arriba), pero si lo hago normalmente y solo cambio el sizeDelta, parece que se está moviendo, pero las coordenadas Y permanecen iguales. Entonces lo que necesito hacer es encontrar una manera de cambiar la posición Y de una forma que haga que parezca que el objeto está quieto.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para cambiar la altura de un rect transform a través de código sin que parezca que se mueve, puedes ajustar el anclaje y la posición del objeto del juego.

    Cuando cambias la altura de un rect transform, afectará la posición del objeto del juego si no está anclado correctamente. Para evitar este problema, necesitas ajustar los puntos de anclaje y la posición del objeto.

    Aquí están los pasos para lograr el efecto deseado:

    1. Obtén la posición Y actual del objeto del juego.
    float currentYPos = gameObject.GetComponent<recttransform>().anchoredPosition.y;
    
    1. Calcula la nueva altura de sizeDelta.
    float newHeight = 100f; // establece aquí la altura deseada
    
    Vector2 sizeDelta = gameObject.GetComponent<recttransform>().sizeDelta;
    sizeDelta.y = newHeight;
    gameObject.GetComponent<recttransform>().sizeDelta = sizeDelta;
    
    1. Calcula la nueva posición Y utilizando la posición Y actual y la nueva altura.
    float newYPos = currentYPos - (newHeight - sizeDelta.y) / 2f;
    
    Vector2 anchoredPos = gameObject.GetComponent<recttransform>().anchoredPosition;
    anchoredPos.y = newYPos;
    gameObject.GetComponent<recttransform>().anchoredPosition = anchoredPos;
    

    Esto ajustará la posición Y del objeto del juego para que parezca que se mantiene quieto mientras aumenta su altura.

Comments are closed.