为玩家恢复健康状态

时间:2019-08-01 14:58:42

标签: c# unity3d game-physics

我有一个游戏,玩家拥有10点生命值。每当他失去健康,他的心脏就会下降0.5。为了给玩家一些希望,我决定为敌人增加一颗掉落的心。这些心脏可以填补2点生命值。

问题在于我编写的运行状况脚本与公共Int运行状况有关。这不允许使用“ <,>,+,-”,而且我也不知道如何适应这种情况。

我的健康脚本

    [Header ("Max/Starting Health")]
    public int maxHealth;
    [Header ("Current Health")]
    public int health;

    void Start () {
        health = maxHealth;
    }

    public bool TakeHeal (int amount) {
        if (dead || health == maxHealth)
            return false;

        health = Mathf.Min (maxHealth, health + amount);

        if (OnTakeHealEvent != null)
            OnTakeHealEvent.Invoke();


        return true;
    }

HealthPickup脚本


using UnityEngine;

public class HealthBoost : MonoBehaviour
{
    Health health;

    public float healthBonus = 2;

    void Awake()
    {
      health = FindObjectOfType<Health>();
    }

    void OnTriggerEnter2D(Collider2D col)
    {
      if(health < health.maxHealth)
      {
        Destroy(gameObject);
        health = health + healthBonus;
      }
    }
}

我当时正在考虑使healthpickup脚本更适合于治疗。但我不知道该如何使其与gameObject冲突

1 个答案:

答案 0 :(得分:2)

您可能要修改运行状况对象内部的运行状况值:

if(health.health < health.maxHealth) {
    health.health = health.health + healthBonus;
}