Как изменить только одно измерение в Unity, используя c#? - PullRequest
0 голосов
/ 07 мая 2020

Я делаю простую игру, чтобы начать с единства, есть куб, который идет прямо и уклоняется от других кубов (препятствий), которые появляются случайным образом. Чтобы препятствие всегда появлялось перед игроком, я установил код, который заставляет позицию появления 7 (блоки генерируются в них случайным образом) следовать координатам игрока, но прибавляя 100 к Z, чтобы они генерировались не сверху игрока. Теперь моя проблема в том, что при создании препятствие также меняет свое положение по X, заставляя их падать с платформы, когда я go вправо или влево вместе с игроком. Как я могу заставить их следовать только за позицией Z игрока, а не за X? Вот код, который заставляет создателей менять положение:

public class MoveSpawn : MonoBehaviour
{

    public Transform player;
    public Vector3 offset;


    // Update is called once per frame
    void Update()
    {
        transform.position = player.position + offset;

    }
}

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

О, это довольно просто. Поэтому, если вы хотите посмотреть только координаты Z (или любые другие) куба или любого объекта в Unity, вы можете просто использовать: transform.position.z Это то же самое, что и с векторами. Примерно так:

Vector3 offset = ...;
Debug.Log(offset.x) //returns x coordinate of offset
0 голосов
/ 07 мая 2020

Я бы просто умножил позицию игрока на (0,0,1) (другими словами, Vector3.forward) перед добавлением его к смещению:

public class MoveSpawn : MonoBehaviour
{

    public Transform player;
    public Vector3 offset;


    // Update is called once per frame
    void Update()
    {
        transform.position = player.position * Vector3.forward + offset;

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...