饥荒Mod 开发(二四):制作一把万能工具

饥荒Mod 开发(二三):显示物品栏详细信息
饥荒Mod 开发(二五):常用组件 总结
源码
饥荒中的每种工具都有独特的功能,比如 斧头用来砍树, 铲子用来 挖东西,鹤嘴锄用来挖矿, 锤子可以敲碎东西,所以我们随身备着4种工具,不仅需要多占用背包还要时不时的切换,那怎么制作一把万能的工具,可以用来砍树,打怪,挖矿,敲东西等。

原理

每个物品都会对应一个或者多个动作,这个动作决定了如何操作这个物品,每个预制物会添加一个"workable"组件,然后设置action,这样这个物品就可以被 Action处理。

	--下面是 evergreens.lua 中预制物的代码
      inst:AddComponent("workable")
      inst.components.workable:SetWorkAction(ACTIONS.CHOP)
	--浆果
	inst:AddComponent("workable")
	inst.components.workable:SetWorkAction(ACTIONS.DIG)

上两篇有介绍如何显示物品的详情,也可以将鼠标放到物品上,就能显示物品的动作。
比如萤火虫的动作是NET, 需要用捕虫网捕捉
在这里插入图片描述
浆果可以挖
在这里插入图片描述

树木可以砍
在这里插入图片描述

实现万能工具

2.1 添加tool组件

之前有一篇是实现了一把AOE 的武器,饥荒Mod 开发(十):制作一把AOE武器, 我们在这个基础上再增加一些功能, 让这把武器能砍树,能捕虫,能挖矿等等。只需要给这把武器添加相应的动作就可以了,代码很简单。在lightsword.lua 文件中添加tool组件

    -- 添加工具组件
    inst:AddComponent("tool")
    -- 设置工具动作为砍砍
    inst.components.tool:SetAction(ACTIONS.CHOP)
    -- 设置工具动作为锤子
    inst.components.tool:SetAction(ACTIONS.HAMMER)
    -- 设置工具动作为挖掘
    inst.components.tool:SetAction(ACTIONS.DIG)
    -- 设置工具动作为网
    inst.components.tool:SetAction(ACTIONS.NET)
    -- 设置工具动作为挖矿
    inst.components.tool:SetAction(ACTIONS.MINE)

进入游戏测试

进入游戏打开调试控制台,输入 c_give(“lightsword”) 可以获取一把武器, 装备之后就可以看到效果了
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置耐久度

工具有耐久度的设定,使用的时候会消耗耐久度,可以根据不同的动作设置不同的耐久度消耗,比如砍一下 消耗2%, 挖一下矿消耗2%, 捕虫 消耗1%等,可以自由设定。当然也可以不设置耐久,这样就可以一直用

    -- 添加有限使用组件
    inst:AddComponent("finiteuses")
    -- 设置最大使用次数为100
    inst.components.finiteuses:SetMaxUses(100)
    -- 设置当前使用次数为100
    inst.components.finiteuses:SetUses(100)
    -- 设置当使用完毕时的回调函数,移除实体
    inst.components.finiteuses:SetOnFinished(function (inst)
        inst:Remove()
    end)

    -- 设置各种动作的消耗
    -- 砍动作消耗3次使用
    inst.components.finiteuses:SetConsumption(ACTIONS.CHOP, 3)
    -- 锤子动作消耗2次使用
    inst.components.finiteuses:SetConsumption(ACTIONS.HAMMER, 2)
    -- 挖掘动作消耗2次使用
    inst.components.finiteuses:SetConsumption(ACTIONS.DIG, 2)
    -- 网动作消耗1次使用
    inst.components.finiteuses:SetConsumption(ACTIONS.NET, 1)
  • 32
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值