首页 > 解决方案 > Python中的3d碰撞

问题描述

我正在尝试在 python 中创建一个实体 3d 盒子来充当墙,但是,盒子的边界延伸到盒子所在的位置。如中,一条不可见的线继续越过盒子的边缘,与实际盒子一样实心。这是碰撞边界图的相关片段:

    for i in range(len(self.walls)):
        wall = self.walls[i]
        xRad = wall.pos.x / 2 - 0.5
        zRad = wall.pos.z / 2 - 0.5
        
        if (self.camera.eye.x <= wall.pos.x + xRad):
            self.camera.eye.x = wall.pos.x + xRad
        if (self.camera.eye.x <= wall.pos.x - xRad):
            self.camera.eye.x = wall.pos.x - xRad
        if (self.camera.eye.z <= wall.pos.z + zRad):
            self.camera.eye.z = wall.pos.z + zRad
        if (self.camera.eye.z <= wall.pos.z - zRad):
            self.camera.eye.z = wall.pos.z - zRad

我需要做什么才能将边界限制在盒子的实际边缘?

标签: python3d

解决方案


您的边界条件可能是错误的:

for i in range(len(self.walls)):
    wall = self.walls[i]
    xRad = wall.pos.x / 2 - 0.5
    zRad = wall.pos.z / 2 - 0.5
            
    if (self.camera.eye.x >= wall.pos.x + xRad):
        self.camera.eye.x = wall.pos.x + xRad
    if (self.camera.eye.x <= wall.pos.x - xRad):
        self.camera.eye.x = wall.pos.x - xRad
    if (self.camera.eye.z >= wall.pos.z + zRad):
        self.camera.eye.z = wall.pos.z + zRad
    if (self.camera.eye.z <= wall.pos.z - zRad):
        self.camera.eye.z = wall.pos.z - zRad

推荐阅读