Domanda

Sto lavorando con l'Unità 3 e la mia dimensione totale livello sarà solo un quadrilatero con un muro su ogni lato. All'interno di questa saranno due muri aggiuntivi che creano un involucro che limita il giocatore ad una porzione del livello che si espande gradualmente.

Io chiamo queste due pareti ZBoundary e XBoundary, e finora per un prototipo hanno mappato il loro movimento ad alcuni tasti della tastiera. Quello che voglio fare è quando si muove, l'altro cresce in lunghezza in modo che siano sempre unite ad un angolo perpendicolare, quindi voglio essere in grado di interpolare linearmente tra, ad esempio, del ZBoundary coordinata Z e Z coordinata la Xboundary in modo che sempre incontrano e creare un join. Questo crea un problema pure, perché non so come cambiare la dimensione di un GameComponent di programmazione, e continuo a ricevere errori.

Lo so Vector3.lerp può aiutare ma sto affogando nel trasforma e diverse scale e così apprezzerei l'aiuto.

È stato utile?

Soluzione

Sono a metà strada ormai ricevendo il XBoundary per regolare la propria posizione al fine di bloccare sempre al ZBoundary a 90degrees

        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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top