2015-05-20 1 views
2

Я относительно новичок в программировании и прохождении гоночной игры для школьного задания. Я никогда раньше не работал с Unity или C#, и я столкнулся с проблемой, которая была бы очень признательна, если бы кто-то мог мне помочь.Единство, отображающее круги с графическим интерфейсом Текстовая область

Итак, я показываю время и кружки с текстовой областью графического интерфейса, которая работает нормально. Но я также хочу, чтобы круги увеличивались по мере того, как машина добиралась до моего контрольно-пропускного пункта, однако она не работает. Когда я играю в игру, она все еще говорит «Laps: 0» в текстовой области GUI, когда я попадаю на контрольную точку, хотя она должна сказать «Laps: 1».

Я думаю, что, возможно, мне нужно что-то сделать в void Update(), но я не знаю, что. Я уже пробовал много разных вещей, но пока ничего не работает.

public float timeLeft = 150f; 
public int laps = 0; 

void Update() 
{ 
    timeLeft -= Time.deltaTime; 
} 

void OnGUI() 
{ 
    GUI.TextArea (new Rect (10, 10, 150, 20), "Time left: " + timeLeft + "\nLaps: " + laps); 
} 

void OnTriggerEnter (Collider other) 
{ 
    if (other.gameObject.tag == "Checkpoint") 
    { 
     laps = laps + 1; 
    } 
} 

Надеюсь, кто-то более осведомленный, чем я, сможет помочь с этой проблемой.

ответ

2

Вам нужно проверить, действительно ли произошло столкновение с триггером.

Триггеры и столкновения случаются только если:

  • По крайней мере, один из объектов имеют Rigidbody приложенный
  • Оба объекта необходимость иметь коллайдер прикрепленную;
  • Блокпост коллайдер должен иметь «isTrigger» проверил, чтобы быть триггером и получает OnTriggetEnter работает
  • Если оба коллайдер выпукло Mesh коллайдер, они могут проблемы проверка столкновений (и производительность)

Единство Doc:

Это сообщение посылается на триггер коллайдера и RigidBody (или коллайдера, если нет Rigidbody), который затрагивает курок. Примечания: триггерных события передаются только если один из коллайдеров также имеют Rigidbody прикрепленного ...

+0

Я довольно уверен, что Коллисон работает, потому что я только что понял, что что-то на самом деле происходит, когда я ударил контрольно-пропускной пункт. Моя текстовая область GUI по-прежнему говорит «Laps: 0», но под этим вы можете увидеть другой, гораздо более слабый текст, который говорит «Laps: 1», и я действительно не знаю, почему. Фу, это сводит меня с ума. – Lynchian

+0

Можете ли вы использовать Debug.Log, чтобы увидеть поведение «кругов»? Если вы начинаете с другого значения, «кругов» по-прежнему остается на экране? – mayo

+0

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

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