分类
未分类

Starbound mod 武器制作教程(三)

前两篇对文件结构做了很简陋的解释,我觉得有必要通过做一个武器出来来熟悉一下。

准备以阳伞(parasol)为外形,制作一个主功能为大剑连斩,副功能为射击,shift则可以张开减缓下落速度的武器。

这个武器的难点在于一是使用了非武器作为外形,需要重置animation文件,二是使用了原版近战没有的功能:射击,因此需要修改animation文件,可能还需要为近战武器写一个射击的weaponability,我感觉可能没这么麻烦,到时候再看吧。

mod制作的前期工作,目录创建等工作在第一部教程里已经说过了,在此不赘述。

总之先把parasol的animation文件拿过来,和随便一个大剑的animation作比较,就能发现我们需要一个swoosh的状态类和相应的状态,于是复制之,还需要对应的swoosh的part和partstate,复制之。由于该武器不需要系统分配image,我们就把swoosh的image写完整,确定好是哪一套swoosh素材。

然后使用altfire作为副功能,altfire是gunfire的子脚本,gunfire则是大多数枪使用的功能,我们随便找一个,比如gun.animation就可以,复制其中的状态机 firing 进去,以及parts:muzzleflash进去。

剩下的诸如 sounds particleEmitters transformationGroups rotationGroups 等,只要综合下gun和broadsword的aniamtion文件即可,两者基本没有重名的,除了sound的fire名字一样,这个问题之后再解决。

最后效果是这样的

{
  "globalTagDefaults" : {
    "paletteSwaps" : ""
  },

  "animatedParts" : {
    "stateTypes" : {
      "swoosh" : {
        "default" : "idle",
        "states" : {
          "idle" : {
          },
          "fire" : {
            "frames" : 3,
            "cycle" : 0.1,
            "mode" : "transition",
            "transition" : "idle"
          },
          "fire2" : {
            "frames" : 3,
            "cycle" : 0.1,
            "mode" : "transition",
            "transition" : "idle"
          },
          "fire3" : {
            "frames" : 3,
            "cycle" : 0.1,
            "mode" : "transition",
            "transition" : "idle"
          }
        }
      },
      "parasol" : {
        "default" : "closed",
        "states" : {
          "closed" : {},
          "open" : {
            "frames" : 2,
            "cycle" : 0.2,
            "mode" : "end"
          },
          "close" : {
            "frames" : 2,
            "cycle" : 0.2,
            "mode" : "end"
          }
        }
      },
      "firing" : {
        "default" : "off",
        "states" : {
          "off" : {},
          "fire" : {
            "frames" : 2,
            "cycle" : 0.07,
            "mode" : "transition",
            "transition" : "off"
          }
        }
      }
    }
  },

    "parts" : {
      "parasol" : {
        "properties" : {
          "zLevel" : -1,
          "centered" : true,
          "offset" : [0, 1.375],
          "transformationGroups" : ["weapon"],
          "rotationCenter" : [0, 0],
          "damageArea" : [ [-0.7, -1.0], [-0.7, 2.5], [0.5, 2.5], [0.5, -1.0] ]
        },
        "partStates" : {
          "parasol" : {
            "closed" : {
              "properties" : {
                "image" : "parasol.png:close.2"
              }
            },
            "open" : {
              "properties" : {
                "image" : "parasol.png:open."
              }
            },
            "close" : {
              "properties" : {
                "image" : "parasol.png:close."
              }
            }
          }
        }
      },     
     "swoosh" : {
        "properties" : {
          "zLevel" : -1,
          "centered" : true,
          "offset" : [-0.25, 2.5],
          "transformationGroups" : ["swoosh"],
          "rotationCenter" : [0, 0]
        },
        "partStates" : {
          "swoosh" : {
            "idle" : {
              "properties" : {
                "image" : ""
              }
            },
            "fire" : {
              "properties" : {
                "image" : "/items/active/weapons/melee/broadsword/swoosh/energyswoosh.png:",
                "damageArea" : [[-5, 2], [-2.5, 3], [1, 3], [4, 1.75], [5, -0.25], [5, -2.25], [4, -3.25], [0, -2.5]]
              }
            },
            "fire2" : {
              "properties" : {
                "image" : "/items/active/weapons/melee/broadsword/swoosh2/energyswoosh.png:",
                "offset" : [5.0, 1.0],
                "damageArea" : [[-4, 1], [2.5, 1], [2.5, -2], [-4, -2]]
              }
            },
            "fire3" : {
              "properties" : {
                "image" : "/items/active/weapons/melee/broadsword/swoosh3/energyswoosh.png:",
                "offset" : [3.5, 0],
                "damageArea" : [[-4.75, 1.5], [3, 1], [3, -1], [-4.75, -1.5]]
              }
            }
          }
        }
      },
      "muzzleFlash" : {
        "properties" : {
          "zLevel" : -1,
          "centered" : true,
          "offset" : [0.75, 0],
          "fullbright" : true,
          "transformationGroups" : ["muzzle"]
        },

        "partStates" : {
          "firing" : {
            "fire" : {
              "properties" : {
                "image" : "/items/active/weapons/ranged/unrand/spaceplasmarifle/muzzleflash.png:"
              }
            }
          }
        }
      }         
    }, 
    "rotationGroups" : {
      "weapon" : {
        "angularVelocity" : 0
      }
    },
  
    "transformationGroups" : {
      "weapon" : {},
      "muzzle" : {}
    },
    "particleEmitters" : {
      "physicalswoosh" : {
        "active" : false,
        "transformationGroups" : ["swoosh"],
        "burstCount" : 4,
        "particles" : [
          { "particle" : "energyblade"},
          { "particle" : "energyblade2"}
        ]
      }
    },
  "sounds" : {
    "open" : [ ],
    "fire" : [ ],
    "fire2" : [ ],
    "fire3" : [ ]
    
  }
}

后面部分我自己做完了,但是发现过于复杂,很多地方排错都很难解释清楚,写图文教程没有意义。我又没有条件做视频,所以咕咕咕。

编辑:qq删了,很久没碰过这游戏的MOD了,加我也没法给什么指导,建议直接去starbound的官方论坛搜索问题。

“Starbound mod 武器制作教程(三)”上的2条回复

你好作者,很困扰我的一个问题,想请教一下:
Interface界面滚动条,能否在我自己创造的mod物品工作台界面使用单独的滚动条呢?
做了几个新的界面,但是滚动条和数目按钮在interface原版配置文件中找不到对应参数供我改装。统一修改全局滚动条我是会的。不论能否行得通,请劳烦回复我邮箱谢谢^ ^

嘛问题详情我也不知道,之前也没做过UI相关的
参考了下3dprint这个东西,他的.object里规定了互动行为是OpenCraftingInterface,并指定了配置文件为/interface/windowconfig/crafting3dprinter.config,这个config里配置了它的界面,自然也包括scroll。你可以参照它的做法,为自己的工作台配置UI
不知道有没有帮到你。

发表评论

电子邮件地址不会被公开。 必填项已用*标注