那我们如何在我的世界中辨别方向呢?
在mcpi中有一个非常厉害的东西叫events,它能够监听三种类型的事件:
1.events.pollBlockHits() || 2.events.pollChatPosts() || 3.events.pollProjectileHits()
1号是方块的敲击事件监听,2号是信息事件监听,3号是发射物事件监听
咱们今天用第一个方块敲击事件的监听,具体怎么用咱们看一下:
#首先导包
import mcpi.minecraft as mmc
mc = mmc.Minecraft.create()
event = mc.events.pollBlockHits() #通过mc调用这个事件的监听
for e in event: #我们是通过for循环来遍历拿出我们监听到的事件。这里的 e 就是我们拿到的事件。
pass #这不用管,为了代码完整性占位置的。没用
在我的世界中咱们玩家自己有一个坐标我们把它当做x,y,z;假如我们敲了一块我们面前的一个方块,那这个方块的坐标我们记作ex,ey,ez。
回到一开始的问题,我们如何判断面向的方向呢,上面说到我敲的是一块我面前的方块,也就是他在我前面。假设我面向x轴的正方向,那我面前的方块的x坐标是不是一定要比我的大,反之我面向x轴的负方向,我面前的方块坐标一定就比我小。
我们就可以利用这个特点来实现判断方向
import mcpi.minecraft as mmc
mc = mmc.Minecraft.create()
x,y,z = mc.player.getTilePos()
while 1:
for e in mc.events.pollBlockHits():
if e.pos.x > x : #!判断敲击方块的x坐标是否大于玩家本身x坐标
print('x+方向')
elif e.pos.x < x :#!判断敲击方块的x坐标是否小于玩家本身x坐标
print('x-方向')
#!同理我们可以根据这个来判断出其他的方向
elif e.pos.z > z:
print('z+方向')
elif e.pos.z < z:
print('z-方向')
elif e.pos.y > y:
print('y+方向')
elif e.pos.y < y:
print('y-方向')