private int damage;
private float blood = 100;
void OnTriggerEnter(Collider col)
{
if (col.transform.tag == "Shell")
{
if (col.name == "88Shell(Clone)") //被敌方88口径炮弹打中才掉血,其他口径的炮弹打中加血
{
damage = -Random.Range(30, 50);
if (this.gameObject.name == "EnemyFrontArmor") //炮弹打到前装甲区,伤害减少10倍。
{
damage =(int)(damage * 0.1f);
}
blood += damage;
if (blood <= 0)
{
Debug.LogWarning("NPC已死亡!");
Destroy(this.transform.parent.gameObject);
}
}
else
{
damage = 10;
blood += damage;
if (blood >= 100)
{
blood = 100;
}
}
Blood.value = blood / 100; //slider血条显示
}
}
老师,我这有问题。
问题:如果被打中侧面,伤害为30,剩余70。然后第二发打中前装甲时,伤害为3,剩余变成97了。
失败的方法:我把blood改为static时,这个坦克就没有问题,但是其他的坦克就变成公用这唯一的blood了,一辆坦克减血,其他坦克都掉血。
static静态变量是共享的,通过类名访问的,如果想要自己的独有的变量,就生命成public或者private的