登录

×

当前位置: 17317首页 > 我的世界 > 游戏攻略 > >正文

高玩教你制作1.13轨道炮以及追踪弹道修正系统

来源:网络 作者:17317 时间:2019-01-16 10:58:43

下面小编为大家带来我的世界1.13轨道炮制作教程,想在游戏中制作威力强大的轨道炮吗?就一起来看看小编为大家带来了轨道炮的实现方法吧!

1.13轨道炮以及追踪弹道修正系统

不过轨道炮的子弹只是来卖萌的而已,呈现的核心部分在于实装在其之上的 追踪弹道修正系统

此追踪并非百发百中的必中,而是根据追踪目标的位置 对自身的弹道进行偏移修正,

通俗的说就是子弹的前进方向随着目标移动慢慢偏向目标位置,可实现更加真实的特效。

此模块可自定义 追踪的目标点 ——追踪目标的头部或脚部,也可自定义 追踪时的偏移速度 和 追踪角度范围

效果图:

追踪范围内——追踪成功效果

目标超出追踪范围——追踪失败效果

那么进入讲解环节

本次讲解涉及1.13的指令,如果对指令不了解的同学请自行转到指令讲解贴内学习

重点讲解追踪部分的运算,子弹的移动效果实现不做讲解。

追踪模块代码:

#子弹追踪曲线修正

#Usage: execute as @e[tag=bullet,...] at @s run function pack:(...)/bullet_tracking

#Scoreboard

scoreboard objectives add Bullet_RotX dummy

scoreboard objectives add Bullet_RotY dummy

scoreboard objectives add ToTarget_RotX dummy

scoreboard objectives add ToTarget_RotY dummy

scoreboard objectives add Math dummy

#Get_Data

execute store result score @s Bullet_RotX run data get entity @s Rotation[0] 1000000

execute store result score @s Bullet_RotY run data get entity @s Rotation[1] 1000000

#Get_ToTarget_Data

execute as @s at @s anchored feet run tp @s ~ ~ ~ facing entity @e[type=!player,tag=!bullet,distance=..20,limit=1] feet

#瞄准位置(eyes/feet)

execute store result score @s ToTarget_RotX run data get entity @s Rotation[0] 1000000

execute store result score @s ToTarget_RotY run data get entity @s Rotation[1] 1000000

execute store result entity @s Rotation[0] float 0.000001 run scoreboard players get @s Bullet_RotX

execute store result entity @s Rotation[1] float 0.000001 run scoreboard players get @s Bullet_RotY

#-----水平偏移-----

#Offset_Calculation

scoreboard players operation @s Math = @s ToTarget_RotX

scoreboard players operation @s Math -= @s Bullet_RotX

# 偏移探测范围↓ 偏移角度参数↓

execute as @s at @s if score @s Math matches -90000000..0 run tp @s ~ ~ ~ ~-2 ~

execute as @s at @s if score @s Math matches 0..90000000 run tp @s ~ ~ ~ ~2 ~

#-----竖直偏移-----

#Offset_Calculation

scoreboard players operation @s Math = @s ToTarget_RotY

scoreboard players operation @s Math -= @s Bullet_RotY

# 偏移探测范围↓ 偏移角度参数↓

execute as @s at @s if score @s Math matches -90000000..0 run tp @s ~ ~ ~ ~ ~-2

execute as @s at @s if score @s Math matches 0..90000000 run tp @s ~ ~ ~ ~ ~2

复制代码

此代码附件内同样也有,需要的同学可自行搬用

核心思路:

1.13指令系统中,记分板能够读取实体的NBT数据,并存储为整形(integer),因此可以将实体的Rotation存储到记分板内。

但实际的情况中,实体的Rotation是浮点数(float),为了使追踪系统尽量精确,需要将存储到记分板的 小数 数值进行放大,

把小数的数值转换成整数存储进记分板,在数据回调至实体NBT时再缩小存入。

简单介绍记分板的作用:

Bullet_RotX、Bullet_RotY —— 分别存储 子弹实体 实时的Rotation X、Y的数值

ToTarget_RotX、ToTarget_RotY —— 分别存储 子弹实体 基于面向追踪目标状态 的实时 Rotation X、Y 的数值

Math —— 对以上四个记分板数值的运算结果存储

每部分算法分析:

Get_Data —— 将子弹的Rotation放大1000000倍,存入Bullet_RotX、Bullet_RotY记分板中

Get_ToTarget_Data —— 以子弹面向目标时的Rotation放大1000000倍,存入ToTarget_RotX、ToTarget_RotY记分板中

再将子弹原先的朝向数据,通过Bullet_RotX、Bullet_RotY的值 缩小1000000倍 赋值回去

*注意,这里可以修改追踪目标的追踪位点——头部或脚部

接下来的运算就不必多说,将ToTarget_Rot 数据减去 Bullet_Rot ,对应结果存入Math记分板中 ,对Math的值进行判定,执行对应的朝向tp旋转

*注:在这里可以同时调整旋转的程度 ,以及Math的范围判定调整(甚至可以..0 , 0..这么玩)。

当然,这个追踪系统只包含水平和竖直方向上的追踪,没有实现任意弧度的追踪,

但可在此基础上做 朝向分段判定拓展,实现不同偏移加速度。

必备资料
OP指令 龙蛋获取 生孩子方法 活塞制作
骑马方法 苦力怕打法 小动物养殖 结构方块使用
进阶资料
红石教程
红石基本知识 红石粉详解 马桶 电梯陷阱
爆米花机 红石线详解 蛋糕炸弹 侦测器门
知名解说
其他 籽岷 全部 大海
天骐 扁桃 大橙子 >>更多解说
热门视频
最后没庄主什么事 冒险地图Taken2下 我的世界动画:如何构建一个秘密基地工作 翔麟冒险地图阿兰朵5
死亡竞赛与怪物大乱斗 神奇宝贝世代33 捕获闪光肯泰罗 翔麟冒险地图阿兰朵5 >>更多视频
转载请注明“17317”字样 这篇文章不错,我要收藏 收藏专区

我的世界 Minecraft

支持系统:

专区游戏类型: 休闲益智

游戏语言:

礼包 +  更多

  • 灵意花神官方限定皮肤礼包 领取
  • 神树精灵官方限定皮肤礼包 领取
  • 辐射星人个性化皮肤套装礼包 领取
  • 巨噬水鸭个性化皮肤套装礼包 领取
  • 精灵水母个性化皮肤套装礼包 领取
  • 我的世界10人租赁服包月时长 领取
  • 会员福利资源月卡礼包 领取
  • 10人租赁服包月时长礼包 领取

17317手游网

有趣有料福利多
好文热点随时看

扫一扫领福利

新礼包实时掌握

回顶部

关于我们 | 大事记 | 联系我们| 招贤纳士 | 友情链接 | 游戏入库 | 网站地图 充值中心 防沉迷系统 家长监护工程 游戏纠纷处理流程