在降低球员健康的同时,对手没有工作问题

时间:2018-05-02 16:58:51

标签: unity3d collision-detection collision game-physics unityscript

当僵尸进入攻击状态时,健康开始减少我希望将代码更改为当它碰到我的FPS时健康状况下降。

if (anim.GetBool("isAttacking") && !anim.GetBool("isWalking"))
{
    PlayerHealthBar.value -= 2;
    Debug.Log("Hit");
    //anim.SetBool("isAttacking", false);

} 

对于碰撞我使用了碰撞器scirpt,这是.....

void OnTriggerEnter(Collider other)
{
    if(other.tag == "Enemy")
    {
        health = health - 20f;
        Debug.Log("hit");
    }
}

但它现在还不起作用。

1 个答案:

答案 0 :(得分:0)

尝试OnCollisionEnter代替OnTriggerEnter。我注意到这两个函数对于哪个函数在任何给定时间都可以工作有点不可预测。我通常都有这些方法的功能,而且其中一种方法总是被击中。

OnCollisionEnterOnTriggerEnter非常相似。以下是您必须做出的更改:

void OnCollisionEnter (Collision other)
{
    if(other.gameobject.tag == "Enemy")
   {
        health = health - 20f;
        Debug.Log("hit");
    }
}

要清楚这只会减少健康变量。如果这应该是僵尸上的健康变量,你可能需要稍微改变你的代码。

您可能还需要将运行状况更改为PlayerHealthBar.value,具体取决于此脚本的位置以及您实际想要查看的值的更改。我相信你对代码有足够的了解,知道这是否有必要。

最后确保两个物体都有对撞机和刚体。