思路
1.画贴图
2.写物品
3.写抛射物
4.写lua
5.打开游戏测试
6.结束
开始
首先需要准备物品的贴图,之后开始写入物品,
这里对物品进行说明
第一行 物品在游戏内的id
第二行"type" 表示物品的类别,这里是抛射物
第三行"iconTextureData" 表示物品贴图的路径
第四行"group" 表示物品属于哪一大类,这里是自定义类,建议在编写的时候换成 GROUP_MATERIAL
第五行"projectileId" 指的是抛射物的id,等一下会进行说明
第十行"coldTime" 表示使用的冷却时间,可以自行设置
其他都是无关紧要的……
之后打开你的projectiles.json,进行抛射物的编写
这里继续进行说明
第一行 抛射物的id 注意!抛射物的id是你刚才在items.json内编写的"projectileId"里的那个!(第五行)
第二行"ai" 指的是抛射物的逻辑,等一下会在里面进行编写
第三行"textureData" 抛射物的贴图
第四行"width" 抛射物的宽度
第五行"height"抛射物的高度
之后第六,第七也一样
其他也都是无关紧要的,照抄就行了
之后打开projectile_config.json进行lua的编写
第一行把你刚才在projectiles.json里的"ai" 写下去即可
举个例子
比如说你刚才写的是
"ai" : "123"
那么你第一行就要写
"123"
第三行"path" 指的是你的lua储存的位置
其他照抄
到此,你已经完成了物品以及抛射物的编写,接下来进行lua的编写
我们的目标是要在该物品被使用后进行抽奖
所以我们让它在抛射物生成之后进行抽奖,之后删掉抛射物
可以选择function Init()或者function Update()
接下来我们进行下一步,抽
简单来说就是生成随机数,之后生成对应的物品
而生成随机数,可以选择Utils.RandInt()也可以选择Utils.RandTry()
两者的区别就是
Utils.RandInt() :是生成一个数字,简单来说就是概率都是一样的
Utils.RandTry() :是概率,简单来说就是概率可以调整,由括号内的数字决定都是1/n(n为括号内的数字)
可以根据实际情况进行选择
之后我们设置一个变量,
local prize = Utils.RandInt(3)
我们就设置了prize是一个变量,而这个变量所对应的数值是Utils.RandInt(3),也就是0 1 2 3
之后我们的抽就已经完成了
接下来写奖
我们要用到这个
ItemUtils.CreateDrop(int itemID, int count, double centerX, double centerY, double speedX, double speedY, int coldTime = 0)
对我直接从官网抠下来的awa,官网教程在这里:物品API
那么我们简单设定一下
假设prize为0 那么获得一块木头
假设prize为1 那么获得一块圆石
假设prize为2 那么获得一块石头
假设prize为3 那么获得一块面包
接下来就是编写了
if prize == 0 then
ItemUtils.CreateDrop(Reg.ItemID("wood_oak"), 1, self.centerX, self.centerY, 0.0, 0.0, 0)
end
if prize == 1 then
ItemUtils.CreateDrop(Reg.ItemID("cobblestone"), 1, self.centerX, self.centerY, 0.0, 0.0, 0)
end
if prize == 2 then
ItemUtils.CreateDrop(Reg.ItemID("stone"), 1, self.centerX, self.centerY, 0.0, 0.0, 0)
end
if prize == 3 then
ItemUtils.CreateDrop(Reg.ItemID("bread"), 1, self.centerX, self.centerY, 0.0, 0.0, 0)
end
最后一定不要忘记删除抛射物!在结尾处加上self:Kill()
如果没有加上self:Kill()的话,那么会变成一个正常的抛射物,就像手榴弹,炸弹之类的
完成图如下
接下来打开游戏测试
发现测试正常之后,那么我们的物品就已经完成了,之后一定不要忘记注册语言文件!
最后的话
第一次写教程,排版方面可能会有点乱,以及语言表达可能会有些杂乱。如果有什么不懂或是需要改进的话,也欢迎在评论区说出 😃 ,谢谢!
源代码:
function Update()
local prize = Utils.RandInt(3) --注册随机数,即抽的部分
if prize == 0 then
ItemUtils.CreateDrop(Reg.ItemID("wood_oak"), 1, self.centerX, self.centerY, 0.0, 0.0, 0)
end --橡木一块
if prize == 1 then
ItemUtils.CreateDrop(Reg.ItemID("cobblestone"), 1, self.centerX, self.centerY, 0.0, 0.0, 0)
end --圆石一块
if prize == 2 then
ItemUtils.CreateDrop(Reg.ItemID("stone"), 1, self.centerX, self.centerY, 0.0, 0.0, 0)
end --石头一块
if prize == 3 then
ItemUtils.CreateDrop(Reg.ItemID("bread"), 1, self.centerX, self.centerY, 0.0, 0.0, 0)
end --面包一块
--上面是奖的部分
self:Kill()--删除抛射物
end