Unity3D Vector 3 Teleporting

образ

Эй, ребята!

Я приложил изображение, чтобы визуализировать свое объяснение проблемы, которая у меня есть. В моей игре зеленый шарик катится по бесконечной дороге, преследуемый желтым шариком. Чтобы дорога казалась бесконечной, шар телепортируется назад (фиолетовая линия на нижнем изображении), когда он пересекает определенное расстояние по оси X (фиолетовая линия на верхнем изображении). Я сделал это так:

if (gameObject.transform.position.x <= -20) {
    gameObject.transform.position = new Vector3 (transform.position.x + 80, transform.position.y, transform.position.z);
}

и это работает совершенно нормально.

Когда зеленый шар становится "телепортированным", желтый шар должен телепортироваться обратно с тем же значением, чтобы расстояние между слишком маленькими шарами не изменилось после телепортации. Поэтому я сделал публичный игровой объект "враг", поместил желтый шарик внутри вражеского поля в инспекторе и изменил код так:

if (gameObject.transform.position.x <= -20) {
    gameObject.transform.position = new Vector3 (transform.position.x + 80, transform.position.y, transform.position.z);
    enemy.transform.position = new Vector3 (transform.position.x + 80, transform.position.y, transform.position.z);
}

Но, как вы можете видеть на нижнем изображении, желтый шар не телепортировался на том же расстоянии. Кажется, что расстояние прибавляется от исходной начальной точки, а не от точки, которая была до телепортации. Надеюсь, вы, ребята, знаете решение для этого.

У Желтого шара есть сценарий, чтобы следовать за Игроком, может быть, он как-то связан с этим?

void Update ()
{

    //enemy follows the ball with speed 8
    transform.LookAt (target);
    transform.Translate (Vector3.forward * 8 * Time.deltaTime);

    //fix y-position
    Vector3 tmp = transform.position;
    tmp.y = lockedY;
    transform.position = tmp;

}

1 ответ

Решение

Вы хотите отодвинуть противника на 80 единиц назад, тогда вам нужно отодвинуть противника на 80 единиц назад.

enemy.transform.position = new Vector3(враг.position.x + 80,враг .position.y,враг.position.z);

Другие вопросы по тегам