检测用户正在查看哪个多维数据集?

时间:2019-02-21 21:17:37

标签: python opengl math 3d pyopengl

我正在使用python使游戏类似于Minecraft。我有一个世界,用户可以四处走动,环顾四周,但是我不知道如何做到这一点,因此他们可以打破并放置障碍物。

我需要知道如何从世界上块的3d数组(blocks,格式:[[[a,b,c],[d,e,f],[g,h,i]],[[j,k,l],[m,n,o],[p,q,r]],[[s,t,u],[v,w,x],[y,z,0]]]),位置({{1} },xy)和头部旋转(zxrot)。

我也只需要在距它们一定距离的位置上大概5个街区即可。我试图为某行找到一种功能,并对其进行了某种形式的跟踪,但是这种方法没有奏效,我在互联网上四处张望,找不到所需的东西。

我需要能够根据他们所看到的侧面来确定他们将打破哪个块,或者一个新的块将进入哪里。

我不需要知道如何遍历3D网格,也不需要每个多维数据集仅进行一次迭代,我需要能够弄清楚他们在看哪个块以及他们在看哪张脸。我使用数学知识编写了此代码,但由于某种原因,它无法像80%的时间那样工作,但有时它能够弄清楚我正在查看哪个多维数据集(请注意,该多维数据集的0,0,0在中间的底部)

yrot

1 个答案:

答案 0 :(得分:0)

您可以在播放器周围进行接触,并使用从播放器面部“突出”的半径。

半径r是用户可以看到并仍然能够影响它的最大距离。

使用三角形可以检测半径的末端是否在块内,等等。