Как получить конкретный игровой объект из многих, использующих этот скрипт в Unit2d C #? - PullRequest
0 голосов
/ 11 февраля 2019

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

public void OnMouseDown()
{
    Debug.Log(senatorName + " is in chamber " + inChamber);
    GameObject disSenator = GameObject.Find(senatorName);
    newPos = new Vector3(0, 0, -2);
    disSenator.MoveSenator(newPos);
}

public void MoveSenator(Vector3 newPos)
{
    senator.transform.position = newPos;
}

Сценарий возражает на строку disSenator.MoveSenator(newPos);

Я пробовал кучу другихметоды и ничего не работает, даже когда я не получаю ошибок.

Заранее спасибо за ответ на вопрос новичка.

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

Предполагая, что вы наследуете от MonoBehavior, это должно работать, для каждого объекта, на который щелкает мышь, и имеет следующий скрипт:

public void OnMouseDown()
{
    Debug.Log(senatorName + " is in chamber " + inChamber);
    newPos = new Vector3(0, 0, -2);
    transform.position = newPos;            
}
0 голосов
/ 12 февраля 2019

HORRAY !!!Я наткнулся на решение, тщетно трясясь.Хитрость заключается в том, чтобы получить Rigidbody, а не GameObject.Вот код, который работает:

 public void OnMouseDown()
    {
        Debug.Log(senatorName + " is in chamber " + inChamber);
        rbSenator = GetComponent<Rigidbody2D>();
        string newChamber = chooseMove(inChamber);
        newPos = actMove(newChamber);
        inChamber = newChamber;
        rbSenator.transform.position = newPos;
        Debug.Log(senatorName + " is in chamber " + inChamber);
    }
0 голосов
/ 11 февраля 2019

Используйте свойство MonoBehavior gameObject для доступа к объекту, к которому прикреплен скрипт: https://docs.unity3d.com/ScriptReference/Component-gameObject.html

...