Скрипт снятия здоровья

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

Скрипт снятия здоровья

Сообщение reimon245 23 ноя 2011, 17:28

Добрый день,извините что захламляю форум глупыми вопросами. Просто пытаюсь делать по скриптам данным в уроках по созданию рпг на русском а скрипты многие не работают так как в видео. К примеру есть 2 скрипта на создание здоровья у куба (100) и скрипт на то что бы я бил этот куб и снимал по 10 здоровья за удар. Но при ударе снимаю все 100 здоровья и никак иначе. Еще и цель сам игрок не находит, но это я исправил сам , но со снятием здоровья понять никак не могу.
Скрипт на здоровье :
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class EnemyHealth : MonoBehaviour {

        public int maxHealth = 100;
        public int curHealth = 100;
        public float healthBarLength;
                       
        void Start () {
        healthBarLength = Screen.width/2;
        if(maxHealth<1) maxHealth=1;
        curHealth = maxHealth;
        }
       
        void Update () {
        ShowCurrentHealth(curHealth);
        }
       
        void OnGUI () {
       
                GUI.Box(new Rect(10,40,healthBarLength,20),curHealth+"/"+maxHealth);
        }
        public void ShowCurrentHealth(int sch){
        curHealth = sch;
        if(curHealth<0) curHealth = 0;
        if(curHealth>maxHealth) curHealth = maxHealth;
        healthBarLength = (Screen.width/2) * (curHealth / (float)maxHealth);
        }
}
 


Скрипт на удар:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class PlayerAttack : MonoBehaviour {
        public GameObject target;
        void Start () {
        GameObject nearEnemy = GameObject.FindGameObjectWithTag("Enemy");
        target = nearEnemy;
        }
       
        void Update () {
        if(Input.GetKeyDown(KeyCode.F)) {
                        Attack ();
                }
       
        }
        private void Attack () {
                Debug.Log("Player Attacking!");
                EnemyHealth eh = (EnemyHealth)target.GetComponent("EnemyHealth");
                eh.ShowCurrentHealth(-10);
        }
}
 

А еще как сделать чтобы меню со здоровьем было допустим не вверху экрана а снизу посередине, просто если делать попиксельное смещение то на всех разрешениях экрана будет по-разному смотреться, а если делать через width/2 то больше половины экрана зайти не могу, пытался подставить % или после слэша дробь типа 5/2, не сработало. Как еще можно двигать панельки по экрану чтобы не было зависимости от разрешения экрана(просто если делать допустим смещение на 500 пикселей влево то я на экране предпросмотра уже не вижу нужную панель, а на разных разрешениях экрана она будет скакать со смещением).
Заранее спасибо.
Последний раз редактировалось reimon245 23 ноя 2011, 17:31, всего редактировалось 1 раз.
reimon245
UNIт
 
Сообщения: 72
Зарегистрирован: 22 ноя 2011, 07:54

Re: Скрипт снятия здоровья

Сообщение seaman 23 ноя 2011, 17:30

Синтаксис:
Используется csharp
        public void ShowCurrentHealth(int sch){
        curHealth <span style="font-size: 150%; line-height: 116%;">-</span>= sch;
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Скрипт снятия здоровья

Сообщение reimon245 23 ноя 2011, 17:42

Да,только там не - а плюс надо,потому что здоровье должно прибавляться а удар будет -10 и здоровье убавится, но теперь у меня вообще стало здоровье скакать с 90 до 100 ,когда нажимаешь F то загорается 90 и тут же 100. То ли у меня в голове бардак то ли в коде....помогите пожалуйста....ну никак он не отбавляет корректно по 10 здоровья=((((
reimon245
UNIт
 
Сообщения: 72
Зарегистрирован: 22 ноя 2011, 07:54

Re: Скрипт снятия здоровья

Сообщение IDoNotExist 23 ноя 2011, 17:56

reimon245 писал(а):Да,только там не - а плюс надо,потому что здоровье должно прибавляться а удар будет -10 и здоровье убавится, но теперь у меня вообще стало здоровье скакать с 90 до 100 ,когда нажимаешь F то загорается 90 и тут же 100. То ли у меня в голове бардак то ли в коде....помогите пожалуйста....ну никак он не отбавляет корректно по 10 здоровья=((((

Да тут видимо дело не в плюсах - минусах, посмотрите сколько раз у вас в дебаге выскакивает сообщение "Player Attacking!", если моя теория верна, то при нажатии F оно будет вылезать несколько раз а не один, а все потому что у вас никаких задержек не стоит на ударе и в каждом кадре покудова у вас нажата кнопка F у вас будет происходить удар.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Скрипт снятия здоровья

Сообщение reimon245 23 ноя 2011, 18:03

Вы меня простите но взял скрипты слово в слово отсюда и тут у него нету задержек и все шикарно работает.
reimon245
UNIт
 
Сообщения: 72
Зарегистрирован: 22 ноя 2011, 07:54

Re: Скрипт снятия здоровья

Сообщение seaman 23 ноя 2011, 18:22

взял скрипты слово в слово

Это не так. Знак вы уже упустили (действительно +, а не минус).
Также отсебятину написали тут:
Синтаксис:
Используется csharp
Input.GetKeyDown(KeyCode.F)


стало здоровье скакать с 90 до 100 ,когда нажимаешь F то загорается 90 и тут же 100

Может Вы что-то еще исправили? Вроде не должно так быть.

при нажатии F оно будет вылезать несколько раз а не один

Это не так. Читаем мануал:
It will not return true until the user has released the key and pressed it again
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Скрипт снятия здоровья

Сообщение reimon245 24 ноя 2011, 07:51

Все понял в чем проблема , в void udate стоит скрипт ShowCurrentHealth(curHealth); ,который в уроке был введен для проверки изменений здоровья в инспекторе, без скрипта длина полоски не изменялась) Скрипт позже удалили а я оставил,думал он жизненно необходим,он то и покадрово восстанавливал здоровье до 100))) Всем спасибо за помощь!

Остался лишь вопрос как двигать панельки разного типа(того же здоровья) по экрану вне зависимости от его разрешения. Я умею лишь попиксельно,но тогда у меня в окне запуска игры не входит панель здоровья, а я хочу чтобы она была во-первых горизонтально расположена, а во-вторых внизу экрана. И при пиксельном смещении она при разных разрешениях будет смещаться по-разному,Подскажите пожалуйста как,заранее спасибо.
reimon245
UNIт
 
Сообщения: 72
Зарегистрирован: 22 ноя 2011, 07:54

Re: Скрипт снятия здоровья

Сообщение Левш@ 24 ноя 2011, 12:35

Работай с процентами.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Скрипт снятия здоровья

Сообщение reimon245 26 ноя 2011, 09:30

Спасибо буду, не нашел примеров с %, но увидел пример когда использовалось для расположения объекта конструкция типа :
Screen.width-Screen.width/3, это чтобы расположить что-то за половиной экрана, а до половины просто Screen.width/3.
reimon245
UNIт
 
Сообщения: 72
Зарегистрирован: 22 ноя 2011, 07:54


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

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

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 11