2016-02-20 4 views
0

В настоящее время у меня есть несколько проблем с обнаружением конфликтов в моей игре. У меня есть префаб, который становится порожден при помощи экземпляра(), этот объект имеетМогу ли я искать обнаружение столкновения между двумя объектами, не прикрепленными к скрипту?

void OnCollisionEnter2D(Collision2D col) 
{ 
    if (col.gameObject.tag == "present") 
    { 
     gameScore++; 
     Destroy(col.gameObject); 

    } 
} 

Так что, когда происходит столкновение, он уничтожает объект и добавляет 1 к счету.

Я использую это, чтобы установить счет:

public void setScore() 
{ 
    scoreText.text = "Score: " + gameScore.ToString(); 
} 

и я испытал это в другом сценарии, и он работал отлично.

Когда игра воспроизводится, когда происходит столкновение, она удаляет объект, но не изменяет видимый результат в игре.

Я считаю, что это связано с тем, что я не могу присвоить публичный текст переменной

public Text scoreText; 

для сборного.

Из-за этого я попытался прикрепить его к пустующему объекту в своей сцене в надежде на то, что он работает. Это не так.

Я потратил несколько часов, пытаясь разобраться в этом сейчас, и его медленно сводит меня с ума :) Был бы очень признателен за вход. Спасибо!

P.S - Я думал, может быть, если бы я мог искать столкновение в скрипте, но не нуждался в его привязке к объекту, возможно, это сработало бы? - Я понятия не имею, как это сделать, но

Еще раз спасибо за ваше время.

ответ

0

так, прежде всего, это неправильное место, чтобы опубликовать этот вопрос! Это StackOverflow.com, но ваш вопрос должен быть на StackOverflow GameDev. Теперь, поскольку я не могу переместить свой вопрос, я скорее попытаюсь ответить на него. Или, по крайней мере, догадаться. Вы снова вызываете функцию setScore? Не кажется ли вам это должно быть:

void OnCollisionEnter2D(Collision2D col){ if(col.gameObject.tag == "present") { gameScore++; setScore() //HERES THE CHANGE Destroy(col.gameObject); } }

Я знаю, что это основной ответ, но иногда вы теряете из виду за деревьями леса так ....

+0

Спасибо за ответ! Извините, я только что предположил из-за количества предметов, связанных с единством здесь, что это место, чтобы выразить это! Я тоже попробовал. По какой-то причине объект уничтожается, но оценка не добавляется? – SGW

+0

Хорошо, прошло некоторое время с тех пор, как он сыграл с Unity, но я просто вернусь, чтобы проверить, что мы на одной странице: у вас сцена с тремя объектами. 2 * GameObjects * (ваш коллайдер и ваш «настоящий») и * лейбл * называются баллами. Взаимодействие между игровыми игроками, похоже, хорошо работает, проблема заключается в том, как вы обновляете свою информацию. Чтобы обновить ваш ярлык, вам нужно будет иметь переменную типа Label в вашем «Present» -GO, а затем в редакторе назначить ваш ярлык gameScore этой переменной, чтобы вы могли обновить отображаемый текст. У вас есть это? Если нет, попробуйте, а также разместите все свои ошибки. –