创建弹药在之前的 创建第一把枪 教程中,我们指定教程枪使用了默认枪包中的 7.62x39mm 步枪弹。 在本篇教程中,我们将添加一个自己定义的弹药类型,并且让教程枪使用它。 一个自定义的弹药可能需要以下模型:

弹药堆模型,用于制作台、展示框中渲染。子弹实体模型,通常用于火箭弹等需要绘制出弹头的弹药。子弹壳模型,用于自动武器抛壳的渲染。可能需要以下材质:

背包槽位 2D 贴图弹药堆模型贴图子弹实体模型贴图子弹壳模型贴图 其中,除了背包槽位 2D 贴图之外,其他模型和贴图都是非必要的。提示

你可以从 这里 下载到教程创建的模型和贴图。

制作背包槽位 2D 贴图(必要)弹药的背包槽位贴图没有什么要求,你可以自行制作一个方形贴图。 以下是教程制作的贴图: 我们将其命名为 my_ammo.png 并放入枪包中的 textures/ammo/slot/ 路径下。

制作弹药堆模型(非必须)在默认枪包中,弹药堆模型都做成了“弹药盒”形式。 我们可以沿袭这种风格。 以下是教程创建的示例: 特别地,弹药堆模型支持两个定位组: fixed(展示框模型定位组)、thirdperson_hand(第三人称手部模型定位组) 和 ground(掉落物模型定位组)。 这两个定位组的放置方法和效果与枪械模型的相同,你可以去这里看看。 我们将模型导出并命名为 my_ammo_geo.json 放入枪包 models/ammo/ 路径下。 将材质保存为 my_ammo.png 放入枪包 textures/ammo/uv/ 路径下。

制作弹药实体模型(非必须)弹药实体模型通常用于火箭弹等需要绘制出弹头的弹药。本教程简单地制作了一个弹药实体模型用于展示效果。如果你没有需要,你可以跳过这一步。

提示

一般来说,原点(0, 0, 0)应该是弹药实体模型的中心点,且模型的 Pivot Point 应该位于 (0, 0, 0)

我们将模型导出并命名为 my_ammo_entity_geo.json 并放入枪包 models/ammo_entity/ 路径下。 将材质保存为 my_ammo_entity.png 并放入枪包 textures/ammo_entity/ 路径下。

制作弹壳模型(非必须)弹壳模型用于用于自动武器抛壳的渲染。如果你没有需要,你可以跳过这一步。

提示

一般来说,原点(0, 0, 0)应该是弹壳模型的中心点,且模型的 Pivot Point 应该位于 (0, 0, 0)

我们将模型导出并命名为 my_ammo_shell.json 并放入枪包 models/shell/ 路径下。 将材质保存为 my_ammo_shell.png 并放入枪包 textures/shell/ 路径下。 在完成了所有上述步骤之后,你的枪包文件结构应该看起来像:

tutorial_gun_pack

└─ tutorial

├─ pack.json

├─ textures

│ ├─ shell

│ │ └─ my_ammo_shell.png

│ ├─ gun

│ ├─ ammo_entity

│ │ └─ my_ammo_entity.png

│ └─ ammo

│ ├─ uv

│ │ └─ my_ammo.png

│ └─ slot

│ └─ my_ammo.png

├─ sounds

├─ models

│ ├─ shell

│ │ └─ my_ammo_shell.json

│ ├─ gun

│ ├─ ammo_entity

│ │ └─ my_ammo_entity_geo.json

│ └─ ammo

│ └─ my_ammo_geo.json

├─ lang

└─ guns创建弹药效果文件(必要)弹药效果文件位于 ammo/display/ 目录下。接下来我们创建一个 my_ammo_display.json 文件并放入其中。 在 my_ammo_display.json 文件中放入以下内容:

{

// 弹药堆模型

"model": "tutorial:ammo/my_ammo_geo",

// 弹药堆模型贴图

"texture": "tutorial:ammo/uv/my_ammo",

// 背包 2D 贴图

"slot": "tutorial:ammo/slot/my_ammo",

// 弹壳模型和贴图

"shell": {

"model": "tutorial:shell/my_ammo_shell",

"texture": "tutorial:shell/my_ammo_shell"

},

// 子弹实体模型和贴图

"entity": {

"model": "tutorial:ammo_entity/my_ammo_entity_geo",

"texture": "tutorial:ammo_entity/my_ammo_entity"

}

}创建弹药定义文件(必要)弹药定义文件位于 ammo/index/ 目录下。其文件名就是弹药的id。接下来我们创建 my_ammo.json 文件并放入其中。 在 my_ammo.json 中放入以下内容:

{

// 弹药的显示名称,可以在语言文件中定义

"name": "tutorial.ammo.my_ammo.name",

// 指定我们在上文中创建的效果文件

"display": "tutorial:my_ammo_display",

// 弹药的最大堆叠数量

"stack_size": 60

}在语言文件 lang/en_us.json 中补上弹药的显示名称的定义。

"tutorial.ammo.my_ammo.name": "My Ammo"使用新弹药原先,我们的教程枪使用的弹药类型是默认枪包提供的 7.62x39mm步枪弹,接下来我们将使用上文定义的新弹药类型,并在游戏中检查它的效果。 更改 guns/data/ak47_data.json 中的 "ammo" 属性,

"ammo": "tutorial:my_ammo"为了查看弹药实体,我们可以暂时将子弹速度调慢以便观察。更改 "bullet" 属性中的 "speed" 属性,

...

"bullet': {

...

"speed": 1,

...

},

...我们暂时不实现抛壳,因为它需要一些复杂的修改,我们会在以后的章节中涉及到。 接下来,进入游戏,检验你的成果吧。

Copyright © 2088 VR世界杯_世界杯举办 - weiqer.com All Rights Reserved.
友情链接