【问题标题】:Endless Runner in UnityUnity 中的无尽跑步者
【发布时间】:2019-03-14 16:44:59
【问题描述】:

我有一个项目,我必须统一创建一个无尽的跑步游戏。我遇到的问题是在游戏的碰撞方面,球体和其中一个物体发生碰撞,我希望球体被摧毁。这是我的代码:

private void OnCollisionEnter(Collision other)
{
    if (other.gameObject.tag == "lethal")
    {
        Destroy(gameObject);
    }                      
}

我将游戏中的对象标记为lethal。问题是即使使用此代码,球体在碰撞时也不会被破坏,而只是阻止球而不是破坏球的障碍。

有什么帮助吗?不知道我做错了什么

【问题讨论】:

  • 关于第二部分和障碍物,你的对撞机是触发器吗?
  • 可能是Destroy(other.gameObject);?
  • 不确定它是否会对您的问题产生任何影响,但只是一点评论。您不应该使用 == 来比较字符串类型,而是使用: other.gameObject.tag.equals("lethal")
  • @Niklas7 实际上在 C# 中,它们的工作方式相同。在 Java 中,它们的工作方式不同 :)
  • 你应该使用 CompareTag(),它的效率要高得多

标签: c# unity3d


【解决方案1】:
  • 禁用它们之间的物理。如果您的游戏滞后并且破坏发生缓慢,您的“跑步者”将受到此干扰
  • 使用 ontriggerentered 代替对撞机
  • 不要使用带有“==”的字符串比较,而是按照@Jichael 的建议使用equals 或CompareTag。

如果您真的想使用物理,请为您的跑步者创建一个子对象,这应该会触发碰撞而不是您的跑步者。并将标签赋予该子对象

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多