69 lines
2.5 KiB
Markdown
69 lines
2.5 KiB
Markdown
---
|
||
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/1_1.48802b15.jpg
|
||
hard: 进阶
|
||
time: 30分钟
|
||
---
|
||
|
||
# 自定义远程武器
|
||
|
||
|
||
|
||
#### 作者:境界
|
||
|
||
|
||
|
||
目前,我的世界中国版支持以弓为主的自定义远程武器。使用附加包可以添加新的弓道具以及弓的手持位置与拉伸动画。使用弓的功能逻辑则会依赖MODSDK,我们将这两个部分各自拆解一下。
|
||
|
||
|
||
|
||
#### 材质包配置
|
||
|
||

|
||
|
||
|
||
|
||
①自定义弓的命名必须在符号“:”后以bow结尾,这样子才会在接下来为物品添加使用弓动画组件行为时,动画会正常播放。
|
||
|
||
②minecraft:icon会指向一个贴图资源短名路径,它会由开发者自己在textures文件夹下的item_texture.json定义。
|
||
|
||
③minecraft:use_animation会为物品在玩家使用时做出某个动画,这里我们添加bow这个值,以便玩家拉伸弓的时候默认下会慢慢移动,并且视角缩小。
|
||
|
||
④netease:frame_animation内有三个键对,frame_count指的是弓箭拉伸时一共有多少张序列图会播放,在原版的弓中,玩家拉伸弓到最底一共会播放三张贴图。
|
||
|
||
|
||
|
||
#### 行为包配置
|
||
|
||

|
||
|
||
|
||
|
||
①必须将custom_item_type设置为ranged_weapon
|
||
|
||
②minecraft:max_damage用来设置弓的最大耐久值。
|
||
|
||
③minecraft:use_duration用来设置弓的可拉伸蓄力的使用时间,我们需要将时间设置的足够长,以免出现在一段时间内出现重复蓄力的问题。
|
||
|
||
④minecraft:max_stack_size用来设置弓的堆叠数量,弓属于武器装备范畴,因此建议一个栏中只能堆叠一个。
|
||
|
||
⑤minecraft:hand_equipped用来将自定义弓在第三人称的渲染形象和原版弓一致。
|
||
|
||
⑥netease:render_offsets用来设置自定义弓在第一人称的手持位置,其中controller_position_adjust用来控制位置,controller_rotation_adjust用来控制角度,controller_scale用来控制大小缩放。
|
||
|
||
|
||
|
||
#### 发射投掷物功能
|
||
|
||

|
||
|
||
|
||
|
||
①监听ItemReleaseUsingServerEvent事件
|
||
|
||
②根据蓄力的时间,由开发者决定根据时间的长短来划分箭的伤害,以达到模拟出原版弓箭发射时的动态伤害效果。
|
||
|
||

|
||
|
||
|
||
|
||
③判断玩家的游戏模式,若为创造模式,不消耗弓的耐久和箭的数量的前提下,即可发射箭。若非创造模式,则会搜索背包内是否有箭道具,有则消耗并扣除一点弓耐久,否则直接返回,不执行后面发射箭的逻辑。 |