Атака

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

Атака

Сообщение smorikb 04 окт 2012, 17:34

Вот я тут смотрел огасоду . Я по его уроку написал скрипт Бар жизней. И скрипт атаки, но когда я нажимаю клавишу F то отнимаются не 10 здоровья, а всё здоровье. Как сделать чтобы отнималось по 10.


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

 public class PlayerHealth : MonoBehaviour {
   //публичные переменные для настроек
   public int maxHealth = 100;
   
   //блок переменных локального пользования
   public int _curHealth = 100;
   private float healthBarLength;
   
   //производятся начальные расчеты при создании объекта
   void Start () {
    //задаем начальную ширину бара здоровья
    healthBarLength = Screen.width /2;
    //предотвращаем ввод неправильного значения
    //максимального значения
    if(maxHealth<1) maxHealth=1;
    _curHealth = maxHealth;  
   }
   
   
   void Update () {
     AddjustCurrentHealth(_curHealth);
   }
   // Выводится сам бар посредством графического интерфейса
   //событие вывода этого интерфейса - стандартое
   void OnGUI() {
    //выводится бар состояния здоровья и числовые значения его
    GUI.Box(new Rect(10,40,healthBarLength,20),_curHealth + "/" +maxHealth);
   }
   // Производим расчет нужной  ширины бара состояния здоровья
   //исходя из текущего состояния здоровья
   public void AddjustCurrentHealth( int adj){
    _curHealth = adj;
    //блок по предотвращению неверного состояния здоровья
    //меньше нуля и больше максимума
    //так как изменяем здоровье из вне
    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;

 // Use this for initialization
 void Start () {

 }

 // Update is called once per frame
 void Update () {

 if(Input.GetKeyUp(KeyCode.F) ){
 Attack();
 }
 }

 private void Attack(){
 Debug.Log ("Player Attacking");
 EnemyHealth eh = (EnemyHealth) target.GetComponent("EnemyHealth");


 eh.AddjustCurrentHealth(-1);
 }
 }




Помогите что я сделал не так
smorikb
UNIт
 
Сообщения: 96
Зарегистрирован: 29 авг 2012, 20:44

Re: Атака

Сообщение 2rusbekov 04 окт 2012, 17:38

Синтаксис:
Используется csharp
public void AddjustCurrentHealth( int adj){
    _curHealth = adj;


И

Синтаксис:
Используется csharp
eh.AddjustCurrentHealth(-1);
из этого получаем _curHealth  = -1

Затем

Синтаксис:
Используется csharp
if(_curHealth < 0) _curHealth = 0;


Лучше так сделай
Синтаксис:
Используется csharp
public void AddjustCurrentHealth( int adj){
    _curHealth -= adj;

Синтаксис:
Используется csharp
eh.AddjustCurrentHealth(1);
Still alive...
Аватара пользователя
2rusbekov
Адепт
 
Сообщения: 1409
Зарегистрирован: 06 апр 2012, 12:57
Откуда: Бишкек

Re: Атака

Сообщение KorsaiR 04 окт 2012, 17:50

обычно я пишу в таких случаях +=, так точно работает, ибо именно так у меня хп расчитывается всегда)хотя вроде там без разницы..не помню,давно тудым не заглядывал
Мои игры: Sunrise, Fireground, Spacerift
Sunrise: _www.sunsurv.ru , _https://store.steampowered.com/app/6631 ... _survival/
Fireground: _https://store.steampowered.com/app/1026 ... ND/?beta=0
Spacerift: _https://vk.com/spacerift
Аватара пользователя
KorsaiR
Старожил
 
Сообщения: 797
Зарегистрирован: 09 июл 2012, 12:20
Откуда: Новосибирск
Skype: pwiliya

Re: Атака

Сообщение smorikb 04 окт 2012, 17:57

Можешь как нибудь нормально скрипт написать, а то я даже непонял что ты написал
smorikb
UNIт
 
Сообщения: 96
Зарегистрирован: 29 авг 2012, 20:44

Re: Атака

Сообщение KorsaiR 04 окт 2012, 18:01

у тебя "_curHealth = adj;"

попробуй вместо этого сделать

_curHealth += adj;
Мои игры: Sunrise, Fireground, Spacerift
Sunrise: _www.sunsurv.ru , _https://store.steampowered.com/app/6631 ... _survival/
Fireground: _https://store.steampowered.com/app/1026 ... ND/?beta=0
Spacerift: _https://vk.com/spacerift
Аватара пользователя
KorsaiR
Старожил
 
Сообщения: 797
Зарегистрирован: 09 июл 2012, 12:20
Откуда: Новосибирск
Skype: pwiliya

Re: Атака

Сообщение smorikb 04 окт 2012, 18:10

Cделал но теперь жму F и уже воще нечего не происходит
smorikb
UNIт
 
Сообщения: 96
Зарегистрирован: 29 авг 2012, 20:44

Re: Атака

Сообщение mrcoder 04 окт 2012, 22:24

подучи основы программирования.
если ты не понимаешь как работает такой простой код - то впервую очередь разберись с тем как программировать вообще(язык не важен).
Аватара пользователя
mrcoder
Старожил
 
Сообщения: 704
Зарегистрирован: 28 июн 2012, 22:40

Re: Атака

Сообщение 2rusbekov 05 окт 2012, 17:30

Попробуй нажать F 50 раз. Отнимется половина жизни.
Still alive...
Аватара пользователя
2rusbekov
Адепт
 
Сообщения: 1409
Зарегистрирован: 06 апр 2012, 12:57
Откуда: Бишкек


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29