我的世界的卫兵怎么做?
需要了解《我的世界》里“卫兵”的工作原理 和现实中的士兵不同,游戏里的卫兵不能主动攻击敌人,也不能移动,只有受到攻击时才会做出对应的措施——向攻击者放出箭矢或是挥动手上的盾牌进行防御。因此想要让一个机器人“参军”成为哨兵,只需要让它能够被攻击和受击的指令即可。
以Minecraft 1.16版本的客户端(1.17版本测试中)为例,每个实体在创建时都会有一个id为data的数组,其中0-3对应的是pos、rotation、scale、colors,4位是动画指令(默认为false,可以设置为true来使用动画),5+是材质球号码。当有新的指令传入时,会进入一个循环,对比各个类型命令的ID,找出相应的动作执行。
因此要实现对“卫兵”的操控,需要提供两种指令:一种是能让他受到攻击并做出防守/反击动作的攻击类指令;另一种是能让他移动的移动类指令。 当然,为了更加真实的效果,我们还可以给这个机器人工学上一种“疲劳属性”——在特定的时间内,如果接收到相同的指令,则执行的效率会越来越差,最终达到一个极值后,再慢慢恢复。这样就能实现真实的“疲惫感”:刚开始输入命令的时候,由于机器人还未进入工作状态,所以可以很快的执行出来,随着之后不断的收到同样的命令,其执行速度将会越来越慢,最后表现为未完工的“施工”状态,当时间足够长的时候会恢复到正常的状态。
以上只是简单的介绍了如何操控一个名为“卫兵”的NPC,其实现实中这样的任务其实非常难完成。因为除了要考虑实体在地图中的展示效果(也就是渲染问题)外,还要考虑到实体与玩家以及其他实体的交互等问题。并且以现在的技术来看,实现起来也有一定的难度。毕竟现在一款游戏能够同时运行多个线程就已经很困难了,更不用说还要多开几个NPC的线程。