请选择 进入手机版 | 继续访问电脑版
查看: 5985|回复: 43

[命令方块] 【导弹防御塔命令教程】可攻击、有弹道、能追踪

  [复制链接]

14

主题

67

帖子

55

积分

Lv.3 矿物能手

UID
16359
小麦
23
金锭
202
下界之星
0
发表于 2017-10-13 11:18:52 | 显示全部楼层 |阅读模式
本帖最后由 Msure 于 2017-10-14 12:23 编辑

今天给大家带来的是防御塔教程
先放两张图看效果:
网易1.gif
网易3.gif
当然也能防空

如图所示,一个导弹防御塔
下面来说说怎么做到的呢......
首先你需要搭建一个塔(废话)样式随意,自己觉得不难看就行。
然后就需要做导弹部分了。
玩过一段时间mc的玩家都知道,火球在mc是呈直线运动的,但是明显图里的火球拐了弯。
那么怎么才能让火球锁定目标并作出轨迹的改变呢,那就先从空间直角坐标系说起吧
空间直角坐标系(此图来源于百度)
空间直角坐标系.png
上过高中的人都学过这个,上过初中的也学过平面直角坐标系,可以类推。
由此图可见坐标系被三个平面分为了8个部分,3个平面又被三条轴细分成12个小平面,三条轴又被原点细分成6条射线,那么加起来一共就有8+12+6=26个区域
假设目标位置就是原点O,那我们只要穷举出火球在26个区域内的可能,并更改火球的运动方向,那么火球就会不断的向原点O靠近。
如图:
方向.png
箭头所示,如果火球在1区域内,会先斜向下运动,直到到达yoz平面再斜向下运动,直到到达x轴,之后沿着x轴运动到达原点。
至此原理部分就说完了,相信有数学基础的人都能理解。

之后给出指令(以下指令基于1.8版本【ps因为作者偷懒没在高版本做】,高版本只需把其中实体名称换掉,如ArmorStand→armor_stand)
首先创建攻击目标的计分板:
  1. /scoreboard objectives add attack dummy
复制代码
然后是穷举26个方位:(以下指令需要高频/循环)
分为8个区域,12个小平面,6条单向轴
  1. /execute @e[score_attack_min=1] ~1 ~2 ~-101 /entitydata @e[type=Fireball,name=233,dx=100,dy=100,dz=100] {direction:[-0.81,-0.81,0.81]}

  2. /execute @e[score_attack_min=1] ~1 ~-100 ~1 /entitydata @e[type=Fireball,name=233,dx=100,dy=100,dz=100] {direction:[-0.81,0.81,-0.81]}

  3. /execute @e[score_attack_min=1] ~1 ~2 ~1 /entitydata @e[type=Fireball,name=233,dx=100,dy=100,dz=100] {direction:[-0.81,-0.81,-0.81]}

  4. /execute @e[score_attack_min=1] ~1 ~-100 ~-101 /entitydata @e[type=Fireball,name=233,dx=100,dy=100,dz=100] {direction:[-0.81,0.81,0.81]}

  5. /execute @e[score_attack_min=1] ~-101 ~2 ~-101 /entitydata @e[type=Fireball,name=233,dx=100,dy=100,dz=100] {direction:[0.81,-0.81,0.81]}

  6. /execute @e[score_attack_min=1] ~-101 ~2 ~1 /entitydata @e[type=Fireball,name=233,dx=100,dy=100,dz=100] {direction:[0.81,-0.81,-0.81]}

  7. /execute @e[score_attack_min=1] ~-101 ~-100 ~1 /entitydata @e[type=Fireball,name=233,dx=100,dy=100,dz=100] {direction:[0.81,0.81,-0.81]}

  8. /execute @e[score_attack_min=1] ~-101 ~-100 ~-101 /entitydata @e[type=Fireball,name=233,dx=100,dy=100,dz=100] {direction:[0.81,0.81,0.81]}

  9. /execute @e[score_attack_min=1] ~-101 ~1 ~1 /entitydata @e[type=Fireball,name=233,dx=100,dy=0,dz=100] {direction:[0.99,0.0,-0.99]}

  10. /execute @e[score_attack_min=1] ~1 ~1 ~1 /entitydata @e[type=Fireball,name=233,dx=100,dy=0,dz=100] {direction:[-0.99,0.0,-0.99]}

  11. /execute @e[score_attack_min=1] ~1 ~1 ~-1 /entitydata @e[type=Fireball,name=233,dx=100,dy=0,dz=100] {direction:[-0.99,0.0,0.99]}

  12. /execute @e[score_attack_min=1] ~-101 ~1 ~-101 /entitydata @e[type=Fireball,name=233,dx=100,dy=0,dz=100] {direction:[0.99,0.0,0.99]}

  13. /execute @e[score_attack_min=1] ~-101 ~2 ~ /entitydata @e[type=Fireball,name=233,dx=100,dy=100,dz=0] {direction:[0.99,-0.99,0.0]}

  14. /execute @e[score_attack_min=1] ~1 ~-100 ~ /entitydata @e[type=Fireball,name=233,dx=100,dy=100,dz=0] {direction:[-0.99,0.99,0.0]}

  15. /execute @e[score_attack_min=1] ~1 ~2 ~ /entitydata @e[type=Fireball,name=233,dx=100,dy=100,dz=0] {direction:[-0.99,-0.99,0.0]}

  16. /execute @e[score_attack_min=1] ~-101 ~-100 ~ /entitydata @e[type=Fireball,name=233,dx=100,dy=100,dz=0] {direction:[0.99,0.99,0.0]}

  17. /execute @e[score_attack_min=1] ~ ~-100 ~1 /entitydata @e[type=Fireball,name=233,dx=0,dy=100,dz=100] {direction:[0.0,0.99,-0.99]}

  18. /execute @e[score_attack_min=1] ~ ~2 ~-101 /entitydata @e[type=Fireball,name=233,dx=0,dy=100,dz=100] {direction:[0.0,-0.99,0.99]}

  19. /execute @e[score_attack_min=1] ~ ~2 ~1 /entitydata @e[type=Fireball,name=233,dx=0,dy=100,dz=100] {direction:[0.0,-0.99,-0.99]}

  20. /execute @e[score_attack_min=1] ~ ~-100 ~-101 /entitydata @e[type=Fireball,name=233,dx=0,dy=100,dz=100] {direction:[0.0,0.99,0.99]}

  21. /execute @e[score_attack_min=1] ~ ~2 ~ /entitydata @e[type=Fireball,name=233,dx=0,dy=100,dz=0] {direction:[0.0,-1.4,0.0]}

  22. /execute @e[score_attack_min=1] ~1 ~1 ~ /entitydata @e[type=Fireball,name=233,dx=100,dy=0,dz=0] {direction:[-1.4,0.0,0.0]}

  23. /execute @e[score_attack_min=1] ~-101 ~1 ~ /entitydata @e[type=Fireball,name=233,dx=100,dy=0,dz=0] {direction:[1.4,0.0,0.0]}

  24. /execute @e[score_attack_min=1] ~ ~-100 ~ /entitydata @e[type=Fireball,name=233,dx=0,dy=100,dz=0] {direction:[0.0,1.4,0.0]}

  25. /execute @e[score_attack_min=1] ~ ~1 ~1 /entitydata @e[type=Fireball,name=233,dx=0,dy=0,dz=100] {direction:[0.0,0.0,-1.4]}

  26. /execute @e[score_attack_min=1] ~ ~1 ~-101 /entitydata @e[type=Fireball,name=233,dx=0,dy=0,dz=100] {direction:[0.0,0.0,1.4]}
复制代码

这样就能做到一个名为233的火球无限靠近目标了
之后为了提高命中率,让火球靠近目标召唤苦力怕即爆炸:
  1. /execute @e[score_attack_min=1] ~ ~ ~ /execute @e[type=Fireball,name=233,r=2] ~ ~ ~ /summon Creeper ~ ~ ~ {ExplosionRadius:2,Fuse:-1,ActiveEffects:[{Id:14,Duration:99999}],CustomName:导弹}

  2. /execute @e[score_attack_min=1] ~ ~ ~ /execute @e[type=Fireball,name=233,r=2] ~ ~ ~ /kill @e[type=Fireball,r=2]
复制代码
为了好看我们加点特效:
  1. /execute @e[type=Fireball] ~ ~ ~ /particle flame ~ ~ ~ 0.01 0.01 0.01 0.06 8 force
复制代码
到此为止追踪及命中部分
就搞定了,下面来说发射部分,由上述指令可知,只要召唤一个名字为233的火球,这个火球就会追着计分板attack至少为1的玩家跑。
首先我们在防御塔里面放一个盔甲架:
  1. /summon ArmorStand ~ ~ ~ {CustomName:"2333",CustomNameVisible:0b,NoGravity:0,Invisible:1}
复制代码
之后可用低频脉冲顺序激活下列指令:(如五秒激活一次)
  1. /execute @e[type=ArmorStand,name=2333] ~ ~ ~ /scoreboard players set @e[r=70] attack 0

  2. /execute @e[type=ArmorStand,name=2333] ~ ~ ~ /scoreboard players set @e[name=!233,c=1,r=50,rm=1] attack 1

  3. /execute @e[score_attack_min=1] ~ ~ ~ /execute @e[type=ArmorStand,name=2333] ~ ~ ~ /summon Fireball ~ ~20 ~ {CustomName:"233",CustomNameVisible:0b,direction:[0.0,2.0,0.0],ExplosionPower:2}

  4. /execute @e[type=ArmorStand,name=2333] ~ ~ ~ /execute @e[type=Fireball,name=233,r=60] ~ ~ ~ /playsound fireworks.launch @a[r=60] ~ ~ ~ 100 0 0
复制代码
这样就会自动检测2333盔甲架周围50格的最近玩家并锁定,每激活一次发射一次导弹。

然后导弹防御塔就大功告成了!

各位看官高抬贵手点点赞吧~

经常有各大xx网站盗 取论坛的帖子,在此声明,本帖转载需经过作者同意

评分

参与人数 6 小麦 +8 金锭 +34 收起 理由
会飞的面包 + 5 优秀作品
潮潮 + 1 优秀作品
Netro777 + 1 + 3 看不懂但很666
白菜菜菜菜菜子 + 10 666666
DHK + 1 + 10 厉害了
翔翼之刃 + 1 + 10 优秀作品

查看全部评分

2

主题

5

帖子

3

积分

Lv.1 新手木匠

UID
35645
小麦
0
金锭
18
下界之星
0
发表于 2017-10-13 12:00:13 来自手机 | 显示全部楼层
可以用于建造类似LOL地图的 防御塔吗?  蓝色方防御塔,只攻击 紫色方的角色和怪,不攻击自己方

14

主题

67

帖子

55

积分

Lv.3 矿物能手

UID
16359
小麦
23
金锭
202
下界之星
0
 楼主| 发表于 2017-10-13 12:03:44 来自手机 | 显示全部楼层
艾米 发表于 2017-10-13 12:00
可以用于建造类似LOL地图的 防御塔吗?  蓝色方防御塔,只攻击 紫色方的角色和怪,不攻击自己方

可以加组队,只攻击其他队伍的就好

72

主题

7752

帖子

2751

积分

Lv.8 凋零克星

UID
514
小麦
731
金锭
6063
下界之星
0

内测精英勋章问答斯基的方向盘

发表于 2017-10-13 12:25:35 | 显示全部楼层
空间直角坐标系?应该是三维直角坐标系吧

点评

去补补立体几何基础  发表于 2017-10-22 15:26
学名就叫空间直角坐标系呀  发表于 2017-10-13 12:28

30

主题

583

帖子

300

积分

Lv.5 农牧专家

UID
132755
小麦
123
金锭
916
下界之星
0

内测精英勋章

发表于 2017-10-13 12:35:19 | 显示全部楼层
我觉得我需要继续学习数学啊呜
在下星辰,有何贵干?

30

主题

402

帖子

131

积分

Lv.4 怪物猎人

UID
712557
小麦
0
金锭
467
下界之星
0
发表于 2017-10-13 12:45:58 来自手机 | 显示全部楼层
我还没上高中额

1

主题

16

帖子

6

积分

Lv.1 新手木匠

UID
22012
小麦
1
金锭
22
下界之星
0
发表于 2017-10-13 12:50:11 来自手机 | 显示全部楼层
ArmorStand好像在1.11.2用不来 可能要改成armor_stand

14

主题

67

帖子

55

积分

Lv.3 矿物能手

UID
16359
小麦
23
金锭
202
下界之星
0
 楼主| 发表于 2017-10-13 12:59:13 来自手机 | 显示全部楼层
从零开始的木头 发表于 2017-10-13 12:50
ArmorStand好像在1.11.2用不来 可能要改成armor_stand

嗯,我在中间单独说明了,高版本实体ID的更改

1

主题

16

帖子

6

积分

Lv.1 新手木匠

UID
22012
小麦
1
金锭
22
下界之星
0
发表于 2017-10-13 13:01:45 来自手机 | 显示全部楼层
Msure 发表于 2017-10-13 12:59
嗯,我在中间单独说明了,高版本实体ID的更改

看来是我眼拙了= =

89

主题

3338

帖子

980

积分

管理员

会玩不熊听指挥

UID
11683
小麦
47
金锭
991
下界之星
0

内测精英勋章

发表于 2017-10-13 13:25:38 | 显示全部楼层
我的世界Moba大战即将上线

0

主题

33

帖子

9

积分

Lv.1 新手木匠

UID
16552
小麦
0
金锭
70
下界之星
0
发表于 2017-10-13 23:12:14 | 显示全部楼层
666看起来效果不错

1

主题

6

帖子

4

积分

Lv.1 新手木匠

UID
16711
小麦
1
金锭
28
下界之星
0
发表于 2017-10-14 12:32:56 | 显示全部楼层
穷举肯定很累吧?233,我还是选择bukkit

6

主题

371

帖子

198

积分

Lv.4 怪物猎人

UID
248747
小麦
99
金锭
709
下界之星
0
发表于 2017-10-14 13:06:20 | 显示全部楼层
所以你可以在MC里做出LOL

3

主题

42

帖子

14

积分

Lv.1 新手木匠

UID
296283
小麦
0
金锭
87
下界之星
0
发表于 2017-10-14 18:11:53 来自手机 | 显示全部楼层
很6哦~作者你是自己研究的么awa

1

主题

8

帖子

3

积分

Lv.1 新手木匠

UID
187734
小麦
0
金锭
66
下界之星
0
发表于 2017-10-14 18:32:04 来自手机 | 显示全部楼层
马上就要学空间直角坐标系了,好激动
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部