Создать объект рядом с другим объектом без создания экземпляров - PullRequest
0 голосов
/ 13 октября 2018

У меня есть объект, который всегда находится в одном и том же месте, и я хочу создать его рядом с другим подвижным персонажем.Или, более конкретно, у меня есть два, потому что это пошаговая 3D-игра, я хочу создать этот объект рядом с персонажем, и когда ход проходит, появляется тот же объект рядом с другим другим персонажем.Объект будет появляться всегда рядом с мобильным объектом в начале его хода.Пока у меня есть этот скрипт внутри объекта:

    Vector3 initPosition //the position of the object that I want to move;
    private int whosTurn = 1;

    private IEnumerator WhoTurn()
    {
        if (whosTurn == 1)
        {
            GameController.MovePlayer(1);
            CameraController.isTurnPlayer1 = true;
            CameraController.isTurnPlayer2 = false;
            initPosition = positionPlayer1.transform.position;

        }
        else if (whosTurn == -1)
        {
            GameController.MovePlayer(2);
            CameraController.isTurnPlayer2 = true;
            CameraController.isTurnPlayer1 = false;
        }
        whosTurn = whosTurn * -1;
        yield return 0;

Дело в том, что я не хочу использовать метод экземпляра, просто перемещаю один и тот же объект каждый ход, поэтому я пытаюсь изменить'InitPosition' от персонажа Player, но это 'не работает.Как я могу это сделать?

1 Ответ

0 голосов
/ 14 октября 2018
public Transform pObject;//(player object)
public Transform eObject;//(enemy object)

void Awake () {здесь вам нужно назначить ОБА объектам начальные позиции, под обоими объектами я подразумеваю два элемента, которые вы хотите породить их в следующем.Я не уверен, как вы назначаете это, но так как я использую публичные переменные, вы можете просто перетащить оба объекта в этот скрипт в инспекторе, но если вы используете теги, вы получите их в:

void Awake(){
}

тогда вы можете просто сделать это:

 private IEnumerator WhoTurn()
    {
        if (whosTurn == 1)
        {
            GameController.MovePlayer(1);
            CameraController.isTurnPlayer1 = true;
            CameraController.isTurnPlayer2 = false;
           transform.position=pObject.position;
    }
    else if (whosTurn == -1)
    {
        GameController.MovePlayer(2);
        CameraController.isTurnPlayer2 = true;
        CameraController.isTurnPlayer1 = false;
        transform.position=eObject.position;
    }
    whosTurn = whosTurn * -1;
    yield return 0;

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

в качестве альтернативы, я знаю, что вы не хотите использовать создание экземпляров, но вы можете просто создать один экземпляр, когда начинается ход игрока, затем Destroy(gameObject), когда заканчивается ход..

...