Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2021, 00:37   #1
suzume
Пользователь
 
Регистрация: 04.03.2021
Сообщений: 14
Радость Тема жизней : убывания и прибавления !!!

Всем доброго времени суток дорогие программисты )))
и сразу к сути и небольшой проблеме )))
(((Игра 2D)))
У меня есть 10 image для полосок жизней и два скрипта для взаимодействия с этой полоской жизней
первое убывания жизней
с ним все ОК и работает как надо (1) первый скрипт
при атаке врага полоска image уменьшается и Color работает как надо
Код:
 public int Life_points;   //  количество здоровья (настоящее время)
    public Image[] lifePoints; // картинка жизни  хп 
    public Color[] lifeColors; // картинка цвета жизни ибо если у нас одна полоска жизни пропала то за место сгоревший полоски будет другая умершая 
 
void ChsngeLife() //  изменить количество жизней // вызываться этот метод будет тогда когда нам будет наноситься урон
    {
        for (int l = 0; l < lifePoints.Length; l++) //  делаем проверку (((это Л [l] )))
        {
            if (l < Life_points)  //  если наша жизнь меняется к текущей жизни которая у нас есть  
            {
                lifePoints[l].color = lifeColors[0];  // меняем свет с одного 0 на другой это  индекс будет обозначать зелёный цвет 
 
            }
 
            else // в противном случи
            {
                lifePoints[l].color = lifeColors[1]; // меняем цвет с одного 0 на другой
            }
 
        }                
 
    }
public void Damage(int dmg)  // урон 
    {
        Life_points -= dmg;  // урона сколько мы хотим нанести
 
        if (Life_points < 0)  //если у нас осталось (1 единица жизней)  Life_points)
        {
            Life_points = 0;  
        }
        ChsngeLife();// отнимания жизней  изменения жизни
    }
(2)Второй же скрипт для прибавления жизней
при подбирания аптечки полоска image не шевелиться верх а при следующем ударе полоска реагирует столько сколько я взял аптечек жизней и подстраивается к данному результату
в зависимости каким врагом был нанесён урон
Код:
// ВЕСЬ СКРИПТ 
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class BonusLife : MonoBehaviour
{
    //  что должно происходить после того как мы подберём  аптечку 
 
    public ShipController Ship;  //  будет обозначать наш корабль  (1 скрипт)
   
 private void Start()
    {
        Ship = GameObject.Find("ShipPlayer").GetComponent<ShipController>();//  для того что бы пополнять наше здоровья  корабля
    }
    private void OnCollisionEnter2D(Collision2D coll) // как будет аптечка взаимодействовать с нашим кораблём 
    {
        if (coll.gameObject.CompareTag("Ship")) // с чем будет взаимодействовать наша Аптечка
        {//ИМЕННО ТУТ НУЖНО ВСТАВИТЬ ((( COLOR))) КАК МНЕ КАЖЕТЬСЯ НО Я НЕ ЗНАЮ КАК ПРАВИЛЬНО РАСПИСАТЬ 
            Destroy(gameObject);// удаляем аптечку 
            Ship.Life_points += 2;           
            if (Ship.Life_points < 9) //  сначала делаем проверку сколько у нас жизней если меньше  < 9
            {
                Ship.Life_points += 2;  // делаем что бы за пределы 10 жизней некогда не выходила 
            }
            else
            {
                Ship.Life_points = 10;  // делаем что бы за пределы 10 жизней некогда не выходила 
            }
        }
    }
}
Проблема в самом Colore в скрипте втором (2) Color не реагирует на прибавления...
int реагирует на аптечку но не реагирует Color
тут его как бы нет но я понятия не имею куда его добавить и как все правильно расписать


Как прибавления так и убавления ячейки типа Сердечек)))
на убывание норм а на прибавления не показывается но int считывается ))) цвет не меняется в том и проблема )))



буду очень рад помощи за ранее спасибо )))
Изображения
Тип файла: png 0002.png (403 байт, 16 просмотров)
Тип файла: png 0001.png (400 байт, 16 просмотров)
Тип файла: png 0003.png (378 байт, 16 просмотров)
suzume вне форума Ответить с цитированием
Старый 04.03.2021, 04:36   #2
ichi
Форумчанин
 
Регистрация: 14.03.2012
Сообщений: 147
По умолчанию

Я так понимаю функцию ChsngeLife(); нужно вызвать где-то в этом месте:
Код:
    
private void OnCollisionEnter2D(Collision2D coll) 
{
        if (coll.gameObject.CompareTag("Ship")) 
        {
            Destroy(gameObject);
            Ship.Life_points += 2;           
            if (Ship.Life_points < 9) 
            {
                Ship.Life_points += 2;  
            }
            else
            {
                Ship.Life_points = 10;  
            }
            ChsngeLife();
        }
}
ichi вне форума Ответить с цитированием
Старый 04.03.2021, 13:10   #3
suzume
Пользователь
 
Регистрация: 04.03.2021
Сообщений: 14
По умолчанию

ichi,
Огромное вам спасибо добрый человек все заработало )))

Последний раз редактировалось suzume; 04.03.2021 в 13:15.
suzume вне форума Ответить с цитированием
Старый 04.03.2021, 15:03   #4
suzume
Пользователь
 
Регистрация: 04.03.2021
Сообщений: 14
По умолчанию

ichi,
Огромное вам спасибо добрый человек все заработало )))
suzume вне форума Ответить с цитированием
Старый 05.03.2021, 18:41   #5
suzume
Пользователь
 
Регистрация: 04.03.2021
Сообщений: 14
По умолчанию

теперь все ок ))) помог хороший человек )))
Код:
//Ship.Life_points += 2;    это удалить

            if (Ship.Life_points < 9) //  сначала делаем проверку сколько у нас жизней если меньше  < 9

            {

                Ship.Life_points += 2;  // делаем что бы за пределы 10 жизней некогда не выходила 

            }

            else

            {

                Ship.Life_points = 10;  // делаем что бы за пределы 10 жизней некогда не выходила 

            }

            Ship.ChsngeLife();

            Destroy(gameObject);// удаляем аптечку
suzume вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Технико экономическая тема, ответ министру экономразвития и наша любимая тема про скоростные поезда ) ВСМ ) Alar Свободное общение 18 25.06.2019 21:38
Тема-агрегатор юмора (это служебная тема, не обращайте на неё внимания) Вадим Мошев Свободное общение 0 27.01.2016 14:59
Макрос прибавления dmonco Microsoft Office Excel 3 28.07.2012 02:56
Перехват событий счётчика жизней в игре g-davicelli Win Api 4 16.02.2012 02:57
Мне чисто для озакомления и прибавления опыта не могли вы бы скинуть ссылку на маааленкий троянчик или сами напишите мало же. Artem_host Общие вопросы Delphi 6 31.01.2012 22:08