Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
血量计算问题
张同学斯基发起了问答2017-06-13
6
回复
455
浏览
    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了,一辆坦克减血,其他坦克都掉血。

所有回复
  • siki 2017-06-13

    static静态变量是共享的,通过类名访问的,如果想要自己的独有的变量,就生命成public或者private的

    • 张同学斯基 2017-06-13

      我声明成public,有问题啊。血量显示出问题了。老师你看看我写的代码,哪里出错了。

      (0) 回复
    • siki 2017-06-13

      回复 @ 张同学斯基: 出什么问题了,看了你的描述,没看到你描述的问题的地方

      (0) 回复
    • 张同学斯基 2017-06-14

      回复 @ siki: 问题我解决了。现在有了新问题。老师,我想做个小功能,就是游戏中嵌入塔防游戏的元素。请问我怎么能在地面上安一个炮塔后,自动重新烘焙路面呢?NavMeshAgent 的。

      (0) 回复
    • siki 2017-06-14

      回复 @ 张同学斯基: 对于这种动态的障碍物可以添加NavMesh Obstacle

      (0) 回复
    还有-1条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-06-14

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!