检测玩家视角

By MCSugar_cane    2018/07/23

还记得电影中那些指哪打哪的功夫吗?其实在MC中也可以做到,虽然不是很准,但是可以打。

至于要如何操作,还得从MC中的facing谈起,它是关系游戏中玩家视角的数据,分别为水平方向和垂直方向。原本是一周360度,但在游戏中却不是0到360而是-180到180,分东、南、西、北四个方位,正方位分别是-90、0、90、180。另外,关于facing的两个参数你可以在按F3后显示的信息的左下方看到,在该信息中的参数有小数位,但在选择器中是不能填写小数的,小数位会直接舍去。

检测玩家视角


在这之后,知道facing要怎么选中在指定视角的玩家呢,这就需要选择器的帮助了。分别有ry、rym与rx、rxm,ry、rym选择水平方向的朝向,rx、rxm选择垂直方向的朝向。ry、rx表小于等于,rym、rxm表大于等于,若要选择水平0到90,则为@a[rym=0,rx=90]。但是不可能把360个每个都列举一遍吧,这次我们做一个最简单的,分为东、南、西、北四个方位即可。360/4,每个方位90度,但不是0至90这样,因为那是正方位,还需要一些扩散,结合计分板,即可更方便的处理。

  1. /scoreboard objectives add Facing dummy
  2. /scoreboard players set @a[rym=-135,ry=-45] Facing 1
  3. /scoreboard players set @a[rym=135,ry=-135] Facing 2
  4. /scoreboard players set @a[rym=45,ry=135] Facing 3
  5. /scoreboard players set @a[rym=-45,ry=45] Facing 4

这样,就可以轻松做一些比较有意思的功能。例如在玩家所属方位前方生成一只猪

  1. /execute @a[score_Facing_min=1,score_Facing=1] ~2 ~ ~ summon pig
  2. /execute @a[score_Facing_min=2,score_Facing=2] ~ ~ ~-2 summon pig
  3. /execute @a[score_Facing_min=3,score_Facing=3] ~-2 ~ ~ summon pig
  4. /execute @a[score_Facing_min=4,score_Facing=4] ~ ~ ~2 summon pig


当然也可不通过计分板直接用选择器执行

  1. /execute @a[rym=-135,ry=-45] ~2 ~ ~ summon pig
  2. /execute @a[rym=135,ry=-135] ~ ~ ~-2 summon pig
  3. /execute @a[rym=45,ry=135] ~-2 ~ ~ summon pig
  4. /execute @a[rym=-45,ry=45] ~ ~ ~2 summon pig