【问题标题】:Increment issue while colliding objects in unity3d在unity3d中碰撞物体时增加问题
【发布时间】:2023-03-13 21:48:02
【问题描述】:

我在 unity3D 中创建一个用于测试目的的基本游戏,每当在定义的对象上发生碰撞时,我都会计算对象的数量。我创建了objects,命名为birds1 upto birds8,同时击中了名为birds1、birds2 的对象。我正在尝试增加计数器,它应该将 f 的值增加 1,如果在这里击中鸟,计数器会增加随机数而不是增加 1。我设置了一个计数器不应超过的值限制为 8,因此它停止在 8 的限制。下面是我的代码,我发布了我正在使用的代码。请任何人都可以帮助我解决我的代码运行错误的地方。

public void OnTriggerEnter2D(Collider2D target)
    {
        if (target.gameObject.name == "bird1" || target.gameObject.name == "bird2" || target.gameObject.name == "bird3" || target.gameObject.name == "bird4" || target.gameObject.name == "bird5" || target.gameObject.name == "bird6" || target.gameObject.name == "bird7" || target.gameObject.name == "bird8" && f < 8)
        {
            f++;
            propPAnel8.SetActive(true);
            BirdText.text = "x " + f;
            if (f == 8)
            {
                bound8.isTrigger = true;
            }
        }
    }

【问题讨论】:

  • 你能显示包含这个 if 语句的冲突代码吗?这段代码似乎没有任何问题。仅供参考,您可以为每种类型的鸟分配一个“标签”,然后执行if (target.gameObject.tag == "bird"),而不是检查每个鸟的名称。
  • @ryeMoss 我已经更新了代码
  • @ryeMoss 我也尝试在同一个标​​签中标记所有鸟类,但它仍然给出随机增量。
  • 鸟类是否只有一个对撞机。
  • @SerkanPekçetin 谢谢,这对我有用。

标签: unity3d unity5


【解决方案1】:

OnTriggerEnter2D 将被多次调用,尤其是当您有多个接触点的碰撞器时:这就是为什么 f 中的增量看起来是随机的,但在这种情况下并非如此。

在碰撞过程中,您获得的增量与您的接触点一样多。你想用 1 的增量来实现什么?也许您需要一个布尔值并将 Collider2D 的 isTrigger 属性设置为 false 会有所帮助,但这取决于您的游戏逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 2021-12-05
    • 1970-01-01
    相关资源
    最近更新 更多