Come Lerp tra 2 punti Z-Axis in Unity, e Scala un componente di conseguenza
-
25-10-2019 - |
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.
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);