Удаление объекта

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Удаление объекта

Сообщение Каспалат 12 май 2012, 17:25

Я столкнулся с такой проблемой:
я хочу сделать так, чтобы при 0 значении здоровья бота он исчезал и я написал вот такой скрипт:
Синтаксис:
Используется csharp
public int maxHealth = 100;
public int _lifeTime = 1;

if(maxHealth == 0){
        Destroy(GameObject, _lifeTime);
}


 


что вы можете мне посоветовать в такой ситуации?
Каспалат
UNIт
 
Сообщения: 91
Зарегистрирован: 26 авг 2011, 23:42

Re: Удаление объекта

Сообщение waruiyume 12 май 2012, 17:33

Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Удаление объекта

Сообщение Каспалат 12 май 2012, 17:41

я все прописал правильно библиотеки, классы и т.д я выписал только основную функцию
Синтаксис:
Используется csharp
//Выводит бар, показывающий состояние здоровья игрока

using UnityEngine;
using System.Collections;

public class EnemyHealth : MonoBehaviour {
        //Публичные переменные для настроек
        public int maxHealth = 100;
        //Блок переменных локального пользователя
        private int _curHealth = 100;

        private float healthBarLength;
       
        //Производится начальные расчеты при создании объекта
        void Start () {
                //Задаем начальную ширину бара здоровья
                healthBarLength = Screen.width /2;
                //предотвращаем ввод неправильного значения
                //максимального здоровья
                if(maxHealth<1) maxHealth=1;
                _curHealth = maxHealth;
        }
       
        // Update is called once per frame
        void Update () {
               
        }
        //Выводится сам бар посредством графического игтерфейса
        void OnGUI(){
                //Выводится бар состояния здоровья и числовые значения его
                GUI.Box(new Rect(10,40,healthBarLength,20),_curHealth + "/" + maxHealth);
        }
        //производим расчет нужной ширины бара состояния здоровьяююю
        public void AddjustCurrentHealth(int adj){
                //adj - это изменение состояния здоровья, а не его значение
                //_curHealth = adj; - старое значение
                _curHealth += adj; //новое значение
                //блок по предотвращению получения неверного состояния здоровья
                //меньше нуля и больше максимума
                //так как изменяем здоровье извне
                if(_curHealth < 0) _curHealth = 0;
                if(_curHealth > maxHealth) _curHealth = maxHealth;
                //Расчет бара непосредственно
                healthBarLength = (Screen.width / 2) * (_curHealth / (float)maxHealth);

                if(_curHealth == 0){
                        Destroy(GameObject, 1);
        }
        }
}
 


вот полная
Каспалат
UNIт
 
Сообщения: 91
Зарегистрирован: 26 авг 2011, 23:42

Re: Удаление объекта

Сообщение Каспалат 12 май 2012, 17:42

упс, там не _curHealth , а maxHealth. хотя там нет никакой разницы, что так ошибки, что так ошибки
Каспалат
UNIт
 
Сообщения: 91
Зарегистрирован: 26 авг 2011, 23:42

Re: Удаление объекта

Сообщение Receptor 12 май 2012, 17:44

почему-то в первом посте у вас так:
Синтаксис:
Используется csharp
if(maxHealth == 0){ // если МАКСИМАЛЬНОЕ здоровье ровно нулю
         Destroy(GameObject, _lifeTime);
 


а теперь так:

Синтаксис:
Используется csharp
 if(_curHealth == 0){ //  если ТЕКУЩЕЕ здоровье ровно нулю
                         Destroy(GameObject, 1);
         }
 


Это разные переменные, первая не должна меняться в процессе игры по идеи, а вторая как раз должна
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Удаление объекта

Сообщение Receptor 12 май 2012, 17:48

метод AddjustCurrentHealth нигде не вызывается у Вас вроде. его либо в Update надо вызвать, либо в другом скрипте.
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: Удаление объекта

Сообщение Каспалат 12 май 2012, 17:49

экспериментирую, но на результат это никак не влияет.
Каспалат
UNIт
 
Сообщения: 91
Зарегистрирован: 26 авг 2011, 23:42

Re: Удаление объекта

Сообщение Каспалат 12 май 2012, 17:50

AddjustCurrentHealth используется в другом скрипте
Каспалат
UNIт
 
Сообщения: 91
Зарегистрирован: 26 авг 2011, 23:42

Re: Удаление объекта

Сообщение seaman 12 май 2012, 17:58

Синтаксис:
Используется csharp
Destroy(GameObject, 1);

Сорри, не читал полностью скрипт. Вы пытаетесь класс удалить, или у Вас переменная с таким названием есть? Если есть такая переменная - переобзывайте обязательно! Если нет,- нужно так:
Синтаксис:
Используется csharp
Destroy(gameObject, 1);
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Удаление объекта

Сообщение Каспалат 12 май 2012, 18:01

спасибо, я этого не знал
Каспалат
UNIт
 
Сообщения: 91
Зарегистрирован: 26 авг 2011, 23:42


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 22