Pregunta

Estoy trabajando con Unity 3 y mi tamaño de nivel total será solo un área cuadrilátero con una pared a cada lado. Dentro de esto habrá dos paredes adicionales que crean un recinto que restringe al jugador a una parte del nivel que se expande gradualmente.

Llamo a estas dos paredes Zboundary y Xboundary, y hasta ahora para un prototipo ha asignado su movimiento a algunas teclas de teclado. Lo que quiero hacer es cuando uno se mueve, el otro crece en longitud, por lo que siempre se unen en un ángulo perpendicular, por lo que quiero poder interpolar linealmente entre, por ejemplo, la coordenada Z del ZBoundary y la Z-Coordinada de el Xboundary para que siempre se encuentren y creen una unión. Esto también crea un problema, porque no sé cómo cambiar el tamaño de un gamecomponente programáticamente y sigo recibiendo errores.

lo sé Vector3.lerp Puede ayudar, pero me estoy ahogando en transformaciones y diferentes escalas, por lo que apreciaría la ayuda.

¿Fue útil?

Solución

Ya estoy a la mitad de allí obteniendo el Xboundary para ajustar su posición para que siempre se bloquee al zBoundary a 90 grados

        ZBoundaryRef.transform.Translate((-1 * distancePerZMovement), 0, 0, Space.World);
        // using Space.World so transforms are using the global coordinate system!

        // what I've done here is say, move the XBoundary Z-CoOrd so that it aligns with the ZBoundary Z-CoOrd.
        // the origin of an object is at it's centre point so we need to take this in to account to ensure they join at the corners, not in a Tshape!
        float difference = (ZBoundaryRef.transform.position.x - XBoundaryRef.transform.position.x);
        float adjustment = difference + (ZBoundaryRef.transform.localScale.x/2);
        XBoundaryRef.transform.Translate(adjustment,0,0,Space.World);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top