Использование одного игрового объекта для управления другими случайно выбранными игровыми объектами.C#

Место общения программистов C#
Anonymous
Использование одного игрового объекта для управления другими случайно выбранными игровыми объектами.

Сообщение Anonymous »

Я хочу случайным образом назначить игровые объекты для управления другими игровыми объектами, но я хочу, чтобы каждый из них мог управлять более чем одним. Прямо сейчас код будет проходить через массив игровых объектов и случайным образом назначать им другой игровой объект для управления. Но учитывая то, как я это делаю, я не уверен, что можно позволить каждому игровому объекту управлять двумя или более другими игровыми объектами.
Приведенный ниже код на 100% работает для назначения одного дочернего игрового объекта каждому из выбранных игровых объектов.
Кроме того, я не хочу, чтобы моим игровым объектам была возможность дважды назначать один и тот же игровой объект, и именно здесь я изо всех сил пытаюсь найти хороший способ решить это. Или мне следует попробовать бросить весь предоставленный код в цикл и позволить ему повторяться столько раз, сколько у объекта должны быть дочерние элементы?
void AssignChildren ()
{
pieces = GameObject.FindGameObjectsWithTag("Piece").OrderBy( go => go.name ).ToArray();
int pieceCount = pieces.Length;
Debug.Log (pieceCount);

List usedNumbers = new List();
int newNumber;
for (int iter = 0; iter < pieceCount; iter++)
{
newNumber = Random.Range (0, pieceCount);
PieceScript parentToChildComp = pieces [newNumber].GetComponent ();
while( usedNumbers.Contains( newNumber ) || newNumber == iter || parentToChildComp.whoDoIControl == iter)//add impossible fix here.
{
newNumber = Random.Range( 0, pieceCount);
parentToChildComp = pieces [newNumber].GetComponent ();
}

PieceScript assignPieceChild = pieces [iter].GetComponent ();
assignPieceChild.whoDoIControl = newNumber; // this needs to be edited to an array whoDoIControl[iter] for multiple children I think.
usedNumbers.Add( newNumber );
}

cameraCenter = ((pieces[pieceCount - 1].transform.position - pieces[0].transform.position)) + pieces[0].transform.position;
transform.position = new Vector3(cameraCenter.x, cameraCenter.y,-10);
}

Вернуться в «C#»