Как справиться с двумя точками оси Z в Unity и соответственно масштабировать компонент - PullRequest
1 голос
/ 16 марта 2011

Я работаю с Unity 3, и мой общий размер уровня будет просто четырехугольной областью со стеной с каждой стороны.Внутри этого будут две дополнительные стены, которые создадут ограждение, ограничивающее игрока частью уровня, который постепенно расширяется.

Я называю эти две стены ZBoundary и XBoundary, и пока для прототипа отображены их движения.на некоторые клавиши клавиатуры.То, что я хочу сделать, это когда один перемещается, другой увеличивается в длине, поэтому они всегда соединяются под перпендикулярным углом, поэтому я хочу иметь возможность линейной интерполяции, например, между Z-координатой Z-границы и Z-координатойXboundary, чтобы они всегда встречались и создавали соединение.Это также создает проблему, потому что я не знаю, как программно изменить размер GameComponent и продолжаю получать ошибки.

Я знаю, Vector3.lerp может помочь, но я тону в преобразованиях и другихвесы и так буду благодарен за помощь.

1 Ответ

0 голосов
/ 16 марта 2011

Я уже на полпути, теперь заставляю XBoundary корректировать свое положение, чтобы всегда привязываться к ZBoundary на 90 градусов

        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);
...