Войти
ПрограммированиеФорумОбщее

У меня какая-то дичь, стреляю и удаляется пуля, помогите. (2 стр)

Страницы: 1 2
#15
(Правка: 16:25) 16:25, 5 апр. 2021

Oleg Linkov
Выдает ошибку
error CS1061: 'float' does not contain a definition for 'toString' and no accessible extension method 'toString' accepting a first argument of type 'float' could be found (are you missing a using directive or an assembly reference?)


#16
16:38, 5 апр. 2021

Mr_Kapitoshka
на самом деле твой вариант должен был работать тоже. Тогда он какую ошибку выдавал?

#17
17:19, 5 апр. 2021

Oleg Linkov
я просто не могу в префаб передать текст

#18
18:04, 5 апр. 2021

Mr_Kapitoshka
т.е. ошибки он никакой не выдавал, просто текст не выводился?
я еще вчера твои скрипты почитал, и там есть прилично несуразиц всяких, из-за которых, я подозреваю, твой код просто не исполняется. а это не тоже самое что ошибка. поэтому верни все как было и подумай вот о чем:

у тебя два класса - shot и bullet. в shot ты делаешь вот так -

public GameObject Bullet;
public GameObject BulletPrefab;

оба объекта имеют тип GameObject, не должны ли они быть типа Bullet? соответственно объект Bullet в первой строчке надо переименовать как-то. далее -

Instantiate(BulletPrefab, Bullet.transform.position, Bullet.transform.rotation);

здесь ты создаешь экземпляр объекта BulletPrefab, в который копируется трансформ от Bullet, НО! ты нигде не создал экземпляр Bullet, поэтому вопрос - что же собственно у тебя копируется в BulletPrefab? скорее всего там дефолтные значения, если Юнити не ругается на это. А по дефолту там могут быть все нули. Т.е. BulletPrefab это пустой GameObject висящий где-то в 0, 0, 0 и ничего не делающий.

Соответственно, твой код на Update() и код на OnTriggerEnter никогда не исполняется, поэтому ты ничего и не видишь.

Дальше, даже если бы код исполнялся, то в OnTriggerEnter ты делаешь опять что-то странное -

void OnTriggerEnter(Collider Other){
        if(Other.gameObject.CompareTag ("Enemy")){
            Destroy(gameObject);
            Destroy(Other.gameObject);
            KillingZombie += 1;
            Text.text = "Kills:" + KillingZombie;
        }

а если точнее то вот тут:

Destroy(gameObject);
Destroy(Other.gameObject);

ты только что уничтожил объект самой пули и теперь пытаешься изменить одну из его переменных?

KillingZombie += 1;

как? этой переменной уже не существует.

Вообще сама идея считать количество убитых зомби в пуле это .. неправильно как минимум. Счетчик убийств должен быть в классе представляющим твоего игрока, а то и вовсе в каком-то высокоуровневом менеджере игровой статистики. Но хотя бы в игроке.

#19
19:26, 5 апр. 2021

Oleg Linkov
Так а как в префаб передать текст?

#20
19:32, 5 апр. 2021

Mr_Kapitoshka
перечитай все что я написал, внимательно, еще раз. и так до тех пор пока ты не поймешь как передать в префаб текст

Страницы: 1 2
ПрограммированиеФорумОбщее