【问题标题】:unity 3D colliderunity 3D 对撞机
【发布时间】:2020-04-17 19:35:28
【问题描述】:

我正在尝试开发一个近战格斗游戏,我正在使用边缘对撞机和以下代码 我注意到,当我从检查员那里移动或启用和禁用对撞机时,一切正常,但是当我站在我的宫殿里并使用 AttackCol.enabled = !AttackCol.enabled; 我无法击中并且未调用触发函数
我看到的唯一区别是当我从检查器添加它或移动它时它的颜色是正常的,但是当我通过代码启用和禁用它时,它的颜色变淡并且不做任何事情

public virtual void OnTriggerEnter2D(Collider2D collision)
    {
        if (DamageSources.Contains( collision.tag ))
        {
            StartCoroutine(TakeDamage());
        }
    }

【问题讨论】:

  • 您的TakeDamage() 函数看起来如何? :)

标签: c# unity3d


【解决方案1】:


  • 确保您的触发器游戏对象未标记为静态。
  • 从函数定义中删除virtual
  • 为触发器组件创建另一个游戏对象并尝试更改整个游戏对象的激活,而不是碰撞组件

【讨论】:

【解决方案2】:

AttackCol.enabled = !AttackCol.enabled; 这样的东西很聪明,但是当它被多次调用(意外)时,它可能会出错。我建议以最简单的形式尝试一下AttackCol.enabled = true;,以确保不存在错误。以后你仍然可以让它变得更优雅! :)

【讨论】:

    【解决方案3】:

    我添加了 AttackCol.isTrigger = AttackCol.enabled; AttackCol.enabled = !AttackCol.enabled 之后; 现在一切正常 但我认为这是一种解决方法 但我需要知道为什么颜色会变淡?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多