Вторник, 23 Апреля 2024, 14:33

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » collider (присоеденить к персонажу)
collider
shustr1k76Дата: Воскресенье, 13 Марта 2016, 05:55 | Сообщение # 21
почетный гость
Сейчас нет на сайте
Цитата EchoIT ()
EchoIT

понятно, спасибо! проверил через print, там идет отсчет с 10 и после обьект уничтожается

Добавлено (10 марта 2016, 16:45)
---------------------------------------------
в чем может быть проблема, после уничтожения обьекта, не прибовляется 1. понимаю вопрос глупый, но все же. добавлен public Text countText; перенесен текст в переменую
Код
void OnCollisionEnter(Collision hand) {
  

  if (hand.gameObject.tag == "hand") {
   GetPunch();
 
  }
  
  
    }

    void GetPunch() {
  counter--;

  print (counter);
  if (counter <= 0) {
   count = count + 1;
   Destroy (gameObject);

  }


Сообщение отредактировал shustr1k76 - Воскресенье, 13 Марта 2016, 08:14
VerdCSДата: Воскресенье, 13 Марта 2016, 22:18 | Сообщение # 22
частый гость
Сейчас нет на сайте
shustr1k76, попробуй так:
Код

void GetPunch() {
   counter--;

   print (counter);
   if (counter <= 0) {
      count = count + 1;
      countText.text = count.ToString ();
      Destroy (gameObject);
   }
}
shustr1k76Дата: Понедельник, 14 Марта 2016, 03:22 | Сообщение # 23
почетный гость
Сейчас нет на сайте
когда враг умирает ошибка
NullReferenceException: Object reference not set to an instance of an object
coll.GetPunch () (at Assets/coll.cs:45)
coll.OnCollisionEnter (UnityEngine.Collision hand) (at Assets/coll.cs:31)
LertmindДата: Понедельник, 14 Марта 2016, 17:04 | Сообщение # 24
заслуженный участник
Сейчас нет на сайте
Цитата shustr1k76 ()

когда враг умирает ошибка
NullReferenceException: Object reference not set to an instance of an object
coll.GetPunch () (at Assets/coll.cs:45)
coll.OnCollisionEnter (UnityEngine.Collision hand) (at Assets/coll.cs:31)

Ты наверно добавил поле public Text countText;, но не инициализировал эту переменную, поэтому в ней содержится null. Прикрепи GameObject с Text через Inspector для этой переменной. Вообще, VerdCS всего лишь хотел сказать, что к переменной count число 1 прибавляется, но ты её не выводишь. Ты мог просто перед Destroy добавить print(count); чтобы проверить.
shustr1k76Дата: Вторник, 15 Марта 2016, 19:42 | Сообщение # 25
почетный гость
Сейчас нет на сайте
добавил пустой обьект прикрепил к нему text - он стал дочерним, на игроке висит скрипт, в котором сделал public GameObject textin и перенес туда обьект(textin) и серовно ошибка, понимаю, что, что то не так. крутится где то рядом
Код

public Text countText;
public GameObject textin;
private int count;

void Start () {
GameObject hand = GameObject.Find("hand");
GameObject text = GameObject.Find("textin");
count = 0;
countText = GetComponent<Text>();

void OnCollisionEnter(Collision hand) {

if (hand.gameObject.tag == "hand") {
GetPunch();

}

}

void GetPunch() {
counter--;

print (counter);

if (counter <= 0) {
count = count + 1;

countText.text = count.ToString();

Destroy (gameObject);

}
}
VerdCSДата: Четверг, 17 Марта 2016, 08:01 | Сообщение # 26
частый гость
Сейчас нет на сайте
shustr1k76, Наверное переменная countText ничего не содержит. Попробуй добавить в конце Start() следующую строку:
Код

void Start () {
   
   ///
   print ("countText содержит: " + countText);
}

Если countText содержит null, значит на том объекте, на котором весит скрипт, нет компонента Text, и метод -
Код
countText = GetComponent<Text>();
, не найдя ничего, присваивает countText значение - null

Попробуй удалить эту строку, и в самом инспекторе вручную указать переменной countText нужный Text-компонент.
shustr1k76Дата: Четверг, 17 Марта 2016, 15:14 | Сообщение # 27
почетный гость
Сейчас нет на сайте
Цитата VerdCS ()
Попробуй удалить эту строку, и в самом инспекторе вручную указать переменной countText нужный Text-компонент.

так и сделано.
может быть я вас ввожу в заблуждение, дело в том что, есть игрок(префаб), я его закинул в скрипт респаун, т.е он появляется, я его убиваю.
на нем висит скрипт в котором public Text countText; в него я соответственно закинул нужный Text-компонент. все что нужно после destroy(сметри игрока) прибавлять число,
если без этой строчки
Код
countText = GetComponent<Text>();
countText содержит: countText (UnityEngine.UI.Text)
UnityEngine.MonoBehaviour:print(Object)
coll:Start() (at Assets/coll.cs:25)

с ней
countText содержит:
UnityEngine.MonoBehaviour:print(Object)
coll:Start() (at Assets/coll.cs:25)
VerdCSДата: Четверг, 17 Марта 2016, 20:37 | Сообщение # 28
частый гость
Сейчас нет на сайте
shustr1k76, если я правильно понял у префаба игрока, есть дочерний объект, с компонентом Text. Этот компоненты вы перетянули в поле переменной countText у префаба игрока. Если это так то во первых countText = GetComponent<Text>(); инициализирует переменную значением null, и приведёт к ошибке, поэтому эту строчку нужно изъять; во вторых уничтожая клон префаба методом Destroy (gameObject), вы так же уничтожаете дочерний объект с его текстом, и поэтому не увидите изменений.
Что бы всё сработало клон префаба, при создании, должен каким то образом инициализировать переменную countText, объектом который уже находиться внутри сцены и от этого клона никак не зависит.
Попробуйте сделать так: добавьте в сцену пустой объект. На этот объект добавьте следующий скрипт.
Код

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class Test : MonoBehaviour
{
    public Text countText;
    int globalCount = 0;

    public static Test current;

    void Start ()
    {
       current = this;
    }

    public void IncrementCount ()
    {
       globalCount++;
       countText.text = globalCount.ToString ();
       print(globalCount);
    }
}

Соответственно в переменную countText перетяните нужный вам Text из сцены. Метод GetPunch () тоже нужно изменить:
Код

void GetPunch ()
{
    counter--;

    print (counter);
    if (counter <= 0) {
         count = count + 1;
         Test.current.IncrementCount ();
         Destroy (gameObject);
    }
}

Убедитесь что переменная countText, в скрипте Test, инициализирована.


Сообщение отредактировал VerdCS - Четверг, 17 Марта 2016, 20:37
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » collider (присоеденить к персонажу)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг