python - 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
我需要做什么才能将边界限制在盒子的实际边缘?
解决方案
您的边界条件可能是错误的:
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
推荐阅读
- java - 使用未声明的依赖项
- c++ - C ++:指针向量对更改没有反应
- python - 使用累积模式为 original_str 中的单词创建单词长度列表
- java - 如何在java中创建带有特定图像的保存文件?
- javascript - 如何设置 api-platform react-admin graphql 堆栈?
- c# - 缺少程序集引用和/或指令“找不到类型或命名空间名称”
- python - 有没有办法将值以数组形式插入到表中?
- android - onBackPressed() Internet 不再检测到
- sql - 有没有办法在 PostgresSQL 中使用游标来获取行?
- python-3.x - 如何将多个文件打包成一个以便在手工文件管理器中浏览它们?