开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[闲聊] 从“平滑移动电梯”到“方块展示实体”——创意迭代与细化

 发表于 2024-8-2 22:10:44 来自手机|显示全部楼层|阅读模式 IP:山西省
添补附加包的0.3.3版本发布了一项全新功能——传送电梯。这个版本刚过完它的两岁生日没几天,它的发布日期是2022年7月28日。当时,我想把0.4版本塑造成一个“加入多种工业功能”的版本,所以每个测试版都会添加一些工业相关的功能。而到了第三个测试版,我准备添加电梯。
一开始,我打算做那种可以自定义的电梯,自定义一个电梯厢,然后做平滑的向上向下移动。但我很快发现这难度太高,平滑的向上向下移动几乎没法办到。首先,方块是不能脱离世界的方块网格的,它要么在(0, 0, 0),要么在(0, 1, 0),不可能在(0, 0.5, 0),而实体可以。因此,只能把要上下移动的部分做成一个实体,然后让实体平滑移动。但那对于我来说还是很难,至少当时的我认为那简直是天方夜谭。综合考虑以后,我只能把“平滑移动”砍掉,做成瞬间移动,这就有了当时的“传送电梯”。
后来,仔细研究以后,我发现主要的问题有两个。第一是如何让方块转化为实体,第二是如何让实体有固体碰撞体积。当时的我还是没法解决这两个问题,在我看来,这就是让我添加一个真正的维度一样根本不可能。
时间继续流逝,我终于找到了实现固体实体——让实体拥有固体碰撞体积的办法,那就是运行时ID。在原版,船和潜影贝就是唯二可以与玩家固体碰撞的实体(矿车和船可以互相固体碰撞,但是矿车不能与玩家固体碰撞)。只要将运行时ID指定为这两个实体,就可以实现固体碰撞。不过它们都不怎么样,尤其是潜影贝肯定不行,因为它只能在方块网格中移动,虽然Java版可以用命令让它偏离方块网格,但基岩版不行。而且潜影贝在没有方块支撑时还会瞬移,不太稳定,这更不行了。船还稍微可行一点,不过在创造模式下,只要攻击一下船它就会消失,因为它不使用生命值,而使用结构完整度。
不管怎样,至少主要问题的第二个基本解决了。难的是第一个问题,如何让方块转化为实体。所有方块自然在那,但如何让实体显示为那些方块?首先排除穷举法,方块有那么多,而且万一将来官方更新了方块呢?就算每次官方更新,我们都同步更新,那万一还要用其他附加包的方块呢?因此,千万不能用穷举法。
最近,我终于想出了一个不那么完美的办法,让所有方块都有它对应的可操作的实体,而不用穷举法。有了这个方法,现在就剩如何建立方块与实体之间关系的问题了。我有一个不太可靠的从方块到它对应实体的办法,首先读取方块ID,这个没什么好办法,只能用掉落物形式,也就是把这个方块破坏掉。会掉落一个物品,然后用漏斗矿车之类的实体吸取这个物品,这样我们就得到了在实体物品栏中的方块物品。接下来就是我不保证能成功的一步了,我估计会失败,不过还是说出来为好——用 /loot 命令转移这个物品到方块对应的实体物品栏中。
但是把这个实体转回方块就很难了,用大部分手段放置方块时必须提前知道方块的ID。不过末影人会随机放下手中的方块,使用minecraft:behavior.enderman_leave_block组件。但这个组件只能用于末影人,所以这个办法也没用。不过这不是重点,如果实现不了就加一个设定了事。
重点是用一个实体显示所有方块。Java版有方块展示实体,基岩版却没有,所以我做了一个方块展示实体。它的原理很简单,一个实体手中拿着方块时会显示出来,我们就要利用这个。稍微调整一下旋转角度和枢轴点,并用一些组件缩放模型,我们成功做出了方块展示实体。

(一开始我把凝灰岩傀儡作为模板用,由于我给了它一个完全透明的纹理,又没有设置透明材料,它现在完全是黑的,看起来挺怪的。不过,它至少能拿东西了。)

(后来我添加了一个参考方块,然后把纹理设为包的图标,给它换了个半透明材料,现在它看起来还是有点怪。后来我发现不能在模型里调整大小,所以用组件实现,并删掉了参考方块。)

(调整了一点点,现在它看起来比较真了。中间那个是实体,其他的是方块,判断依据是中间实体的左右有黑线。)

(通过添加0.05的位移修好了黑线后,方块展示实体彻底完成了。)

7月上半月重构那些水泵、水管和水管节点时,我手上写着数据,心里想着一些更激进的功能,比如——为什么水管必须是水管,而不能运输物品,或者甚至实体?还有些元素,我想到了更加奇怪的改进方法——说实话我也不知道这是改进还是改得退步,总之我想了一堆其他方法来实现各种功能。有些想法是不可能实现的,不过还有一部分有些可能。正好其实我很久以前就在添补附加包中加入了管道,现在它只是装饰性方块,也许可以借这个契机做出一整个物流系统?总之,这些想法中极大部分会因为各种原因消失,就算不消失也要花很久时间才能从深不见光的海底打捞上来。
苦力怕论坛,感谢有您~
 发表于 2024-8-3 10:08:51 来自手机|显示全部楼层 IP:上海
厉害!
4#2024-8-3 10:08:51回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-8-2 23:33:51|显示全部楼层 IP:河南省
好牛哇 这也行啊
3#2024-8-2 23:33:51回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-8-2 23:01:04|显示全部楼层 IP:广东省
技术大佬啊
2#2024-8-2 23:01:04回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-11-24 09:52

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3