HexCasting–单法术范围挖掘教程

这款模组关于施法的 Forge 模组,模组的单法术范围挖掘(3x3,5x3,5x5...)这是法术是怎么样的发生的呢?

HexCasting

HexCasting--单法术范围挖掘教程

 

以下讲解使用3x3挖掘,玩家看向方块的上面为例:

基本思路

通过递归的方式生成一个[0, 1, ... , 7, 8]的列表(如果递归深度有限制可以把这一步改成一个硬编码的列表)

获取玩家所看方块的坐标

获取玩家所看方块的面的法向量

将上一步的法向量分别与xyz三个轴的基准向量( 如:x轴基准向量为(1, 0, 0) )做叉乘(如果两向量在同一条直线上,则叉乘结果为(0, 0, 0) )

将上一步的三个叉乘结果放在一个列表中,并将其与[(0, 0, 0)]这个列表做异或操作(去除两列表中重复的元素),这一步的结果就是需要进行偏移的两个轴

对于第一步中生成的列表的每一个元素(以下称为i),执行:

将i分别进行地板除和取余来获得在两个轴上的偏移量

把需要偏移的两个轴的向量分别乘上上一步得到的偏移量

把玩家所看方块的坐标加上上一步的两个结果

破坏上一步结果处的方块

 

HexCasting

效果图

注:

  • 本法术仅为个人实现方法,不代表最好实现方式。
  • 由于当前模组版本一个疑似为bug的向量浮点运算问题,此法术目前只能在xyz的负半轴方向使用,后续模组版本可能会修复。作者已在github修复问题,下一个版本(0.8.4?)将不再存在此问题
  • 由于使用递归的实现方式,在模组默认递归深度配置下无法实现较大范围挖掘;可以通过改配置或把前面部分改成硬编码来解决。

 

伪代码

注:此代码为5x5挖掘的代码,需要更改//EDITME部分来改成其它挖掘大小

递归列表生成部分

Hex Casting

 

相关模组

Hex Casting Mod

mc01

发表评论

您必须 登录 才能发表留言!

  忘记密码? 立即注册