OpenGL中简单矩形碰撞的问题

Problem with simple rectangle collison in OpenGL

我尝试实现碰撞检测和碰撞效果。这是我的碰撞检测代码:

    fun collisionDetection(objcect : Renderable?, object2 : Renderable?) : Boolean {
    var collisionX : Boolean = objcect?.getPosition()?.x?.plus(quadSizeX)!! >= object2?.getPosition()?.x!! && object2?.getPosition()?.x?.plus(quadSizeX)!! >= objcect?.getPosition()?.x!!
    var collisionY : Boolean = objcect?.getPosition()?.y?.plus(quadSizeY)!! >= object2?.getPosition()?.y!! && object2?.getPosition()?.y?.plus(quadSizeY)!! >= objcect?.getPosition()?.y!!
    var collisionZ : Boolean = objcect?.getPosition()?.z?.plus(quadSizeZ)!! >= object2?.getPosition()?.z!! && object2?.getPosition()?.z?.plus(quadSizeZ)!! >= objcect?.getPosition()?.z!!

    return collisionX && collisionY && collisionZ }

当与通过转换设置为重叠值的重叠对象一起使用时,这似乎有效。这样

        wall.translateLocal(Vector3f(0.0f, 1.0f, -8.0f))

        wall2.translateLocal(Vector3f(0.0f, 2.0f, -8.0f))

碰撞检测为真。

当wall2在z轴上以不同的起点和速度移动,但x和y位置相同时,碰撞的效果应该是wall2停止移动,当两个物体的z位置相等时.我在主循环中以这种方式尝试过(以及许多其他方式......),但它仍然无法正常工作:

fun render(dt: Float, t: Float) {
        glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT)


        staticShader.use()
        camera.bind(staticShader)

        wall.render(staticShader)
        wall2.render(staticShader)

        if (collisionDetection(wall, wall2) == true) {
            wall2.getPosition()
        }
        else {wall2.translateLocal(Vector3f(0.0f, 0.0f, -t.toFloat()* 0.001f))}

}

我现在不知道出了什么问题以及如何解决。 collisionDetection 函数似乎没有获取有关 wall2 z 轴上位置变化的信息。或者也许我需要一种不同的方法。

现在一切正常。忘记为第二个对象计算 QuadSize。这导致两个对象在同一个z.coordinate.Nothing上检测碰撞的函数出错了