【问题标题】:Collisions and Colliders not working properly碰撞和碰撞器无法正常工作
【发布时间】:2016-06-01 19:43:16
【问题描述】:

我有一个附加到我的播放器(mainCamera)和子弹预制件的碰撞脚本。

void onCollisionEnter(Collision collision)
{
    Debug.Log("Collision running");
    if(collision.gameObject.tag == "Enemy" && this.gameObject.tag == "MainCamera")
    {
        Debug.Log("Hit Enemy");
        if (Controller.Health > 0)
        {
            Controller.Health -= .2f;
        }
    } else if (collision.gameObject.tag == "Scenary" && this.gameObject.tag == "Bullet")
    {
        Debug.Log("Bullet hits Scenary");
        Destroy(this.gameObject);
    } else if (collision.gameObject.tag == "Enemy" && this.gameObject.tag == "Bullet")
    {
        Debug.Log("Bullet hits Enemy");
        Destroy(this.gameObject);
        EnemyScript.Health-=.2f;
    }

}

我的调试日志都没有被关闭。我对所有对象都有适当的标签,球体子弹上的刚体和球体对撞机,相机上的球体对撞机,场景中的网格对撞机,以及立方体上的方块对撞机。我的没有一个是触发器被勾选。子弹也有重力,它会在某个点后落下。可与箱体碰撞并停止;然而,当它击中墙壁平面或地板平面时,子弹有时会落下或穿过,但有时也会起作用并击中墙壁并停止或击中地板并停留在那里直到它被摧毁。不完全确定问题出在哪里。

【问题讨论】:

  • 我发现了问题,是 OnCollisionEnter 不是 onCollisionEnter。但是,球体穿过地板和墙壁的问题仍然是个问题。
  • “我找到了问题”然后请删除问题以节省版主的时间。如果您有新的实际问题,请继续提出新问题,具体说明

标签: c# unity3d


【解决方案1】:

墙壁或地板的问题是在固定更新中统一检查物理,因此如果您不将移动等逻辑放入固定更新中,则会出现此问题。 也试试这个,为你的子弹添加物理材料。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 2011-07-25
    相关资源
    最近更新 更多