2015-12-27 5 views
1
Score[i].transform.localPosition = new Vector3 (0.013F + i * 0.01F, 0.12F, 0.0F); 

i * 0.01F гарантирует, что игровые объекты не создаются друг над другом. Он создает следующий игровой объект 0.01F для положительного x, чтобы они были рядом друг с другом, а не друг с другом. Для контекста игровые объекты представляют собой модели чисел, которые представляют собой оценку.Инициированный объект GameObject C#

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

Я пробовал это, но он не делал то, что я хочу.

ScoreHandler.Score[i].transform.localPosition = new Vector3 ((- 0.01F + i * 0.01F) * - 0.01F, 0.12F, 0.0F); 

Благодарим за любые советы.

ответ

1

Чтобы ответить на ваш вопрос непосредственно использовать текущий метод, вам нужно умножить отрицательное смещение (- 0.01F) по количеству баллов вы хотите, чтобы отобразить и разделить на 2 (или * 0,5), как следующее:

ScoreHandler.Score[i].transform.localPosition = new Vector3 (-0.01F * ScoreHandler.Score.Length * 0.5F + i * 0.01F, 0.12F, 0.0F); 

конечно, вы можете свернуть * 0,5 со смещением и использование:

-0.005F * ScoreHandler.Score.Length + i * 0.01F 
+0

Это отлично работает теперь я понимаю. Спасибо за помощь, я не думал об этом правильно. Прости, мне потребовалось столько времени, чтобы я вернулся к тебе. –

+0

Нет проблем, я мог бы сказать, что вы шли в правильном направлении. У вас просто было немного не по порядку. – rhett

0

Самый простой (и самый логичный) подход - это порождать все цифры в виде детей вашего объекта «число».

Поскольку они являются детьми вашего номера, перемещение числа приведет к перемещению детей. Пока число знает, сколько у него детей, оно может установить свою собственную позицию соответственно.

public class Number : MonoBehaviour 
{ 
    int numDigits; 
    public float digitWidth = 0.01f; 

    public void AddDigit(int d) 
    { 
     GameObject digit = Instantiate(...prefab for d...); 
     digit.transform.parent = this.transform; 
     digit.transform.localPosition = Vector3.right * (numDigits++ * digitWidth); 

     this.transform.localPosition = Vector3.right * (-0.5f * numDigits * digitWidth); 
    } 
} 

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

Смежные вопросы