我的世界实体方块阵型排列详解 教你怎么排列方块。那下面给大家分享的则是我的世界中的一个教大家对方块进行斜体、90°旋转、非90°旋转阵型排列的方法教程哦~有感兴趣的玩家不妨进来看看下面的介绍吧!
游戏园我的世界官方群:325049520 或 256070479 欢迎各路喜爱我的世界的小伙伴们加入讨论!
玩服务器的小伙伴们可以加入:141931866 群一起联机玩游戏哦!
如果你是腐竹的话可以给我们投稿你的服务器哦~投稿地址:点我进入
如果你有心仪的作品或者心得分享的话,欢迎来游戏园投稿,大家可以点击>>>投稿<<<进行投稿哦~ 有奖品哦~
斜体与旋转(适用于操作厚平面)
存档下载:https://pan.baidu.com/s/1boUD0fX
密码:jzud
前言:
其实斜体、90°旋转的方法是很早就想到了的(大概在第一代斜线法发布几天后,而斜线机也透露出了一点“预告”),但是由于没注意到其重要性与实用性加上太过懒癌(恩这是主要原因),所以迟迟没有发布。
而非90°旋转在当时一直没有想出来,那时的设想会导致旋转正方形后会成为一个奇怪的平行四边形。
一节体训上回想起直角三角形,又想到了“扫描法”,于是一个相对比较标准的非90°旋转法就想出来了(不过缺陷是会有洞(直角三角形斜边大于直边)(可能扫描得密一些可以较好解决))
ps:不久前见到了“船黑科技”,用“中介点扫描法”应该也可以,但是想到效率太低于是没想太多,(不过或许可以控制大小基本不变)
【主要思想】:1.相对坐标“堆叠”;*2.绝对与相对坐标的结合/相互转换(重点);3.(仅在非90°旋转中)“中介”线扫描法;4.(灵活运用的思想)可以把该平面分为多个“大块”,最后的处理效果就像是“大方块的转换”(如分为多个2x2x2的大块,最后原本1x1x1的“像素美”会变成2x2x2)
基本原理示意图
注:我在这里生成的正方形是从(41,114,228)fill到 (62,135,228)
(即以(41,114,228)为原点(以下省略为“正方形原点”,而实体原点(41,114,229)将被省略为“实体原点”),向x+、y+方向作边长为22个方块(两边相对坐标差是~21)的正方形)
斜体
对实体
其实原型就是“第一代斜线法”
【步骤】
1.先要有一排或一面比较整齐的实体阵型(生成法见“fill实体”)
/fill 41 114 229 62 114 229 minecraft:command_block 0 replace {auto:1b,Command:summon snowball ~ ~ ~2 {NoGravity:1b,CustomName:"turn"}}
(这里我生成了从实体原点向x+方向延伸21格(~21)的实体排)
2.使用相对坐标“堆叠”思想进行tp:
execute @e[name=turn] ~1 ~-22 ~ tp @e[name=turn,dx=22,dy=44] ~ ~0.5 ~
原理:这样一排的实体,在前面的会给后面每一个都tp一段距离,最后堆叠出的tp结果就是从前往后递增的tp距离,形成斜体(选取范围很重要)
【最终效果】
(顺便还fill了一个正方形(为后面作准备))
对方块
【步骤】
方法a(相对坐标堆叠法):
1.准备一排实体(不斜)
2.使用相对坐标“堆叠”思想进行clone:
execute @e[name=turn] ~ ~ ~-1 clone ~ ~ ~ ~22 ~44 ~ ~ ~1 ~ masked move
原理:(类似实体斜体)这样一排的实体,在前面的会给后面每一列方块都clone-move一段距离,最后堆叠出的clone-move结果就是从前往后递增的move距离,形成斜体
优点:可以少一些绝对坐标的要求
缺点:这样只能允许1:1的斜体,而且比较费资源,还更可能影响到别的方块
方法b(绝对与相对坐标的结合/相互转换):
*注:(坐标从绝对到相对我称为“推”,相对到绝对我称为“拉”)
1.准备一些实体(可以是任何排列方式(除斜线外曲线也可以,最终“斜体”会沿着这条线来),但必须保证每个实体的控制范围互不影响(一个实体占一个选取范围))
2.使用绝对与相对坐标的结合/相互转换思想进行clone:
“推”:
execute @e[name=turn] ~ ~ ~-1 clone ~ 114 ~ ~ 135 ~ ~ ~ ~ masked move
“拉”(做出与推相反的行为即将推的动作“还原”):
execute @e[name=turn] ~ ~ ~-1 clone ~ ~ ~ ~ ~100 ~ ~ 114 ~ masked move
(注:不论推还是拉,都必须保证所需范围在读取的范围内,而且最后的目标范围取的坐标一定是目标范围中xyz最小的一角的坐标(如果不太明白可以看看一开始给出的示意图))
原理:即绝对与相对坐标的结合/相互转换思想,当然也可以用“函数的加减”来解释(ya=x2,yb=x+1,yc=ya+yb=x2+x+1)
优点:这个“斜体”会完全按照实体的排列方式进行“斜体”
90°旋转
(对斜体的灵活运用)
基本上原理就是示意图上的了,斜体的方式可"推"可"拉"(但必须是1:1),实体在适当时加tag区分就好了(实体阵旋转没做)
【步骤】(注意21是(边长-1)):
1.向上斜体
execute @e[name=turn] ~ ~ ~-1 clone ~ 114 ~ ~ 135 ~ ~ ~ ~ masked move
2.上半部分过渡
execute @e[name=turn] ~ ~21 ~-1 clone ~ ~ ~ ~21 ~ ~ 41 ~ ~ masked move
3.下半部分过渡
execute @e[name=turn] ~ ~ ~-1 clone ~ ~ ~ ~-21 ~ ~ 41 ~ ~ masked move
4.最后的落回
execute @e[name=turn] ~ ~ ~-1 clone ~ 114 ~ ~ 156 ~ ~ ~-21 ~ masked move
非90°旋转
(做完你就会发现,这并不完美)
【主要的特殊原理】:“中介”扫描法
我们都知道,mc的fill、clone暂时不可以直接从一个实体的相对坐标到另一个实体的相对坐标。
但是我们可以借助通过一个已知的绝对坐标作为“中介”,先把这边扫描到的东西放在“中介”处,再把“中介”处的东西放到那边,就间接地实现相对坐标到相对坐标
利用此法,我们就可以把这个正方形分成小排,再对小排依次进行它自己的变换
【步骤】(曾经想过多种方法,还是这种最简洁):
1.作出与该倾斜方向垂直的另一条实体斜线(建议用不同的名字),并给最下面的实体作上标记(建议tag)
/fill 41 114 229 41 135 229 minecraft:command_block 0 replace {auto:1b,Command:summon snowball ~ ~ ~2 {NoGravity:1b,CustomName:"turn2"}}
scoreboard players tag @e[x=41,y=114,z=231,r=1,c=1,name=turn2,tag=!mark] add mark
execute @e[name=turn2] ~22 ~1 ~ tp @e[name=turn2,dx=-44,dy=22] ~-0.5 ~ ~
方式a(会放大且有孔):
2.把正方形弄斜(推)(我这里已经有了一条实体斜线)
execute @e[name=turn] ~ ~ ~-1 clone ~ 114 ~ ~ 135 ~ ~ ~ ~ masked move
3.高频部分(当然也要在适当时停下,我这里是用木质按钮图方便):
(1)存一列方块
execute @e[name=turn2,tag=mark] ~ ~ ~-1 clone ~ ~ ~ ~ ~21 ~ 63 ~ ~ masked move
(2)对这一列方块进行“隔空”斜体
execute @e[name=turn2] ~ ~ ~-1 clone 63 ~ ~ 63 ~ ~ ~ ~ ~ masked move
(3)移动一段距离(切换目标)
tp @e[name=turn2] ~1 ~0.5 ~
方式b(相当于对a的还原,但也不完全是(若完全成为还原动作,移动得在最前))
2.高频部分(当然也要在适当时停下,我这里是用木质按钮图方便):
(1)该线斜体还原,并“存入”
execute @e[name=turn2] ~ ~ ~-1 clone ~ ~ ~ ~ ~ ~ 63 ~ ~ masked move
(2)将
execute @e[name=turn2,tag=mark] ~ ~ ~-1 clone 63 ~ ~ 63 ~21 ~ ~ ~ ~ masked move
(3)移动一段距离(切换目标)
tp @e[name=turn2] ~-1 ~-0.5 ~
3.(高频结束后)把斜的正方形弄正(拉)
execute @e[name=turn] ~ ~ ~-1 clone ~ ~ ~ ~ ~21 ~ ~ 114 ~ masked move