Используйте одну и ту же переменную отдельно в двух GameObjects - PullRequest
0 голосов
/ 01 марта 2019

То, что у меня сейчас есть, это две коробки, перемещенные одним и тем же script, это происходит, если boolean canMove, который есть в сценарии, равен true.

Проблема, с которой я столкнулся, заключается в том, что я хочу включить canMove в false только для одного из этих GameObjects.Но когда я делаю это, очевидно, это меняется для обоих GameObjects.

Что я мог сделать, чтобы иметь контроль над этой переменной на каждом GameObject?

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Если я правильно понял, что проблема в том, что у вас есть скрипт, скажем, как

public class CollisionHandler : MonoBehaviour
{
    public bool CanMove;

    void OnTriggerEnter(Collider other)
    {
        CanMove = false;
    }

    void OnTriggerExit(Collider other)
    {
        CanMove = true;
    }
}

, и вы хотите установить false только для одного из объектов, верно?

Может быть, немного хакерский, но вы можете сделать

public static List<GameObject> lastReset;

void OnTriggerEnter(Collider other)
{
    //get your own index in list
    var myIndex = lastReset.IndexOf(gameObject);

    //get others index
    var otherIndex = lastReset.IndexOf(other.gameObject);

    // Only go on if other is exactly the object in front of you
    if(otherIndex != myIndex - 1) return;

    // You way to define if can move
    CanMove = ...;
}

Чем бы вы ни занимались сбросом, также сделайте

CollisionHandler.lastReset.Remove(objectYouReset);
CollisionHandler.lastReset.Add(objectYouReset);

, чтобы удалить его и установить в конец списка.

0 голосов
/ 01 марта 2019

Вы можете сделать переменную bool общедоступной, чтобы ее можно было увидеть в инспекторе.Теперь измените true для одного и false для другого в Inspector.

...