Проблема с нанесением урона персонажу

162
17 августа 2017, 19:36

Есть персонаж и монстр. Когда персонаж касается монстра, у персонажа должно отниматься здоровье. Скрипт с HealthBar`ом отлично работает и если в Update написать чтобы отнимались жизни всё работает. Но скрипт, который "лежит" на монстре не работает.

Скрип HeathBar`а:

using UnityEngine;
using System.Collections;
public class HealsBar : MonoBehaviour
{
    public float maxHeals;
    public Texture HealsTexture;
    public float dmg;
    private float BarWidth;
    private float realHeals;
    private float TextureWidth;

    void Start()
    {
        BarWidth = Screen.width / 4;
        realHeals = maxHeals;
        TextureWidth = BarWidth;
    }


    void OnGUI()
    {
        GUI.Box(new Rect(10, 10, BarWidth, 40), realHeals + " for " + maxHeals);
        if (HealsTexture != null && TextureWidth > 0)
        {
            GUI.DrawTexture(new Rect(10, 30, TextureWidth, 15), HealsTexture, ScaleMode.ScaleAndCrop, true, 10.0f);
        }
    }
    public void Update()
    {
        calculatedHeals();
    }

    public void calculatedHeals()
    {
        if (realHeals - dmg > 0)
        {
            realHeals = realHeals - dmg;
            TextureWidth = BarWidth * (realHeals / maxHeals);
        }
        else
        {
            realHeals = 0.0f;
            TextureWidth = 0.1f;
        }
    }
}

Скрипт монстра:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MonsterAtack : MonoBehaviour {
    float enemyDamage = 7.0f;
    public Transform target;
    GameObject go = GameObject.FindGameObjectWithTag("Player");
        target = go.transform;
    void OnTriggerEnter2D(Collider2D collider)
    {
        if (collider.gameObject.CompareTag("Player"))
        {
            HealsBar hb = target.GetComponent<HealsBar>();
            hb.calculatedHeals(enemyDamage);
        }
    }
}

Буду благодарен! P.S. Unity ругаеться на: 1. No overload for method calculatedHeals' takes1' arguments. 2.The name `target' does not exist in the current context.

Answer 1

Измените ваш класс MonsterAtack

public class MonsterAtack : MonoBehaviour {
  float enemyDamage = 7;
  HealsBar hb;
  public MonsterAtack()
  {
     hb = GetComponent<HealsBar>();
  }
  void OnTriggerEnter2D(Collider2D collider)
  {
      if (collider.gameObject.CompareTag("Player"))
      {
        hb.dmg = enemyDamage;
        hb.calculatedHeals();
      } 
  }
}
READ ALSO
C# POST запрос для доступа к API

C# POST запрос для доступа к API

Необходимо выполнить POST запрос на один сайт, у меня есть ключ к его APIМожете, пожалуйста, подсказать, как можно реализовать запрос к сайту...

317
asp использование media-breakpoint-up

asp использование media-breakpoint-up

В bootstrap есть такие механизмы

214
Проблема со студией

Проблема со студией

Долго виснет и ничего в итоге не происходит

278
Вызов события dropdown

Вызов события dropdown

Есть dropdownlistИ у него есть событие SelectedIndexChanged

203