2016-02-24 2 views
3

Я работаю над «игрой» для школы, и мне нужно подсчитать голоса. Я использую единство, чтобы персонажи прыгали на кнопках, чтобы подсчитать голоса и перейти к следующему вопросу. Это то, что я до сих пор:Печатать сообщение в консоли Unity, когда GameObject попадает в триггер? Unity5/2D

using UnityEngine; 
using System.Collections; 

public class Vote1 : MonoBehaviour { 

    private int vote1; 
    public GameObject hero_1; 

    void Start() { 
     vote1 = 0; 
    } 

    void Update() { 
    } 
    void OnCollisionEnter2D(Collision2D coll) { 
     if (coll.gameObject.tag == "PlayerObject"){ 
      vote1 = vote1 + 1; 
      print("One Vote Added"); 
     } 
    } 
} 

Этот должен добавлять +1, когда «hero_1» стоит на кнопку, и отображая сообщение «One Vote Добавлена» в консоли, но это не то, что происходит , Что я делаю не так?

Обновленный Кодекс

теперь использует OnCollisionEnter2D, и до сих пор не работает должным образом. Что мне еще не хватает?

+1

Работает ли 'Console.WriteLine'? – Kupiakos

+1

Как выглядит эта функция print()? также голосование1 = vote1 + 1; может быть vote1 ++ или vote1 + = 1; – aguertin

+0

Консоль.WriteLine тоже не работает. – Flightless

ответ

4

С print метод, определенный в MonoBehaviour для печати на консоли Unity, я собираюсь предположить, что вы действительно смотрите в консоли Unity для вывода, и ничего не появляется. Это означает, что либо OnTriggerStay не получает вызов, либо корень коллайдера не имеет тега PlayerObject.

OnTriggerStay вызывается, когда тело 3D-физики находится внутри триггера. Убедитесь, что в GameObject для голосования есть компонент Vote1, и его коллайдер имеет «Is Trigger».

Также убедитесь, что объект имеет физическое тело и коллайдер, который является не спусковым крючком. Корневое преобразование объекта (т. Е. Одно в иерархии без родителей) должно иметь тег PlayerObject. Если игрок находится внутри родительского контейнера, то transform.root получит этот родитель, а не сам игрок.

Кроме того, убедитесь, что столкновение между двумя элементами не отфильтровывается с помощью Edit-> Project Settings-> Physics-> Layer Collision Matrix.

И наконец, убедитесь, что все включено!

Примечание: Вы используете OnTriggerStay, который будет ударяться один раз за кадр, когда игрок находится в триггере. Если у вас нет какого-либо механизма для удаления игрока после голосования, тогда они будут добавлять 30-60 голосов в секунду, в зависимости от FPS.

+0

Есть ли другой код, который я должен использовать для 2d? Вероятно, должен был упомянуть, что я работаю в 2d. – Flightless

+0

Действительно есть. 'OnTriggerStay' предназначен только для трехмерных физических тел. То, что вы ищете, это 'OnTriggerStay2D' (или, возможно,' OnTriggerEnter2D' в соответствии с моей записью) –

+0

Я посмотрел OnTriggerEnter2D и вычислил его то же, что и OnCollisionEnter2D (я пробовал оба в любом случае), и он не регистрирует столкновение/вызывать. – Flightless

-2

Возможно, вы захотите использовать Console.WriteLine («Ваше сообщение»); Более того, но я не уверен, вы, кажется, получаете свой тэг преобразования, который, вероятно, не тот, который вы намеревались сделать

+0

Не забудьте добавить: используя систему в верхней части файла, если вы хотите использовать эту функцию fonctionnality – HammerHeart

1

Предполагая, что Unity может не поддерживать стандартный .NET BCL, вам может потребоваться изучить консоль Юнити «журнал» функциональность:

enter link description here

либо это, либо смотреть в правильное решение лесозаготовительной как NLog, например.

-1

Используйте Console.Write("One vote Added"), если вы хотите напечатать различные строки в одной строке в консоли. И если вы хотите новую строку при каждом вводе на консоль, используйте Console.WriteLine("One Vote Added").

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