【问题标题】:Collider not working issue while decreasing player health碰撞器在降低玩家健康时无法正常工作
【发布时间】:2018-05-02 16:58:51
【问题描述】:

当僵尸进入攻击状态时,生命值开始下降,我想将代码更改为当它与我的 FPS 碰撞时生命值下降。

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

} 

对于 Collide,我使用了 collider scirpt 这是.....

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

但它也不起作用我现在应该做什么。

【问题讨论】:

标签: c# unity3d collision-detection game-physics collision


【解决方案1】:

尝试OnCollisionEnter 而不是OnTriggerEnter。我注意到这两个功能对于在任何给定时间哪个起作用有点不可预测。我通常对这些方法中的每一个都有一个功能,并且总是命中其中一个。

OnCollisionEnter 与OnTriggerEnter 非常相似。以下是您必须做出的改变:

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

需要明确的是,这只会减少健康变量。如果这应该是僵尸的健康变量,您可能需要稍微更改代码。

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

最后确保两个对象都有碰撞体和刚体。

【讨论】:

  • I have noticed that these two functions are a little unpredictable as to which one works at any given time. 呃,完全依赖a single value...
猜你喜欢
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多