猫史档案馆


【岛三代码教程】武器击中爆炸特效代码教程公布!

用户:Stephan轩Stephan轩查看:47 回复:40 评论:47 创建时间:2021-12-30T22:39:00


-----------------------------------------------------------------------------------------------------------------------------

没错,我是第一次发教程贴()不过这个教程十分实用,建议收藏(划掉

废话不多说,接下来进入主题

-----------------------------------------------------------------------------------------------------------------------------

本教程的代码效果就是我的《火力の决一喵战》中爆炸特效,先看效果图:

center_image

center_image

center_image

行了,我不炫了,这可是正经的教程贴()接下来进入最重要的代码部分:

async function destroy(shell/*这是武器实体作为参数*/, e/*这是玩家实体作为参数*/) { //首先定义一个函数,也就是承接爆炸特效
    for (let i = 3; i > 0; i--) { //主冲击波生成3个
        const texiao = world.createEntity({
            mesh: 'mesh/炮弹.vb', //这里用的是“mesh/炮弹.vb”模型,在你的图中自行调整
            position: shell.position,
            fixed: true,
            gravity: false,
            collides: false,
            meshScale: [0.2, 0.2, 0.2],
            particleLifetime: 0.5,
            particleLimit: 100,
            particleRate: 100,
            particleSize: [5, 4, 3, 2, 1],
            particleColor: new Box3RGBColor(1, 0.2, 0),
            meshColor: new Box3RGBColor(1, 0.2, 0),
            meshEmissive: 0.1,
            meshShininess: 1,
            meshMetalness: 100,
        })
        texiao.addTag(e.player.name + '爆炸') //给主冲击波实体添加玩家标签
    }
    for (let i = 10; i > 0; i--) { //火花生成10个
        const texiao2 = world.createEntity({
            mesh: 'mesh/炮弹.vb', //这里用的是“mesh/炮弹.vb”模型,在你的图中自行调整
            position: shell.position,
            fixed: false,
            gravity: true, //火花要允许下落,以便设置速度后自动向下滑行
            collides: false,
            meshScale: [0.001, 0.001, 0.001],
            particleLifetime: 0.5,
            particleLimit: 100,
            particleRate: 100,
            particleSize: [2, 1.8, 1.6, 1.4, 1.2],
            particleColor: new Box3RGBColor(0.5, 0.2, 0),
            meshColor: new Box3RGBColor(1, 0.2, 0),
            meshEmissive: 1,
        })
        texiao2.addTag(e.player.name + '火花') //给火花实体添加玩家标签
        texiao2.velocity.set(Math.random() * 2 - 1, Math.random() * 2 - 1, Math.random() * 2 - 1) //给火花实体设置速度
    }
    const start_tick = world.currentTick //记录特效开始的时刻
    while (world.currentTick - start_tick < 10) { //若当前时刻-开始时刻 小于10(也就是特效还没结束),则一直执行循环中的代码
        world.querySelectorAll('.' + e.player.name + '爆炸').forEach(async (texiao) => { //获取此玩家造成的所有主冲击波实体
            texiao.velocity.set(Math.random() - 0.5, Math.random() - 0.5, Math.random() - 0.5) //随机速度
            texiao.meshScale.x -= 0.02 //减小x缩放
            texiao.meshScale.z -= 0.02 //减小z缩放
            texiao.meshScale.y -= 0.02 //减小y缩放
        })
        await sleep(100)
    }
    //若当前时刻-开始时刻 大于或等于10(也就是特效结束了),跳出上方循环,执行下方代码
    world.querySelectorAll('.' + e.player.name + '爆炸').forEach((e) => { //获取此玩家造成的所有主冲击波实体
        e.destroy() //删除实体
    })
    world.querySelectorAll('.' + e.player.name + '火花').forEach((e) => { //获取此玩家造成的所有火花实体
        e.destroy() //删除实体
    })
}
//函数定义完毕,然后在你的武器击中目标后调用此函数,就能成功添加爆炸特效!

教程结束,可以在你的图里也试试哦!


回复

上一页1 页 / 共 2下一页
Stephan轩Stephan轩

自古沙发归楼主

点赞2


评论


Stephan轩Stephan轩

求回复()

点赞2


评论


A332A332

大佬!

膜拜

 

点赞0


评论


A332A332

已经用了,很好

点赞0


评论


全能代码师全能代码师

en…

点赞0


评论


A332A332

顶顶顶顶

点赞0


评论


墨染云天墨染云天

imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E7%82%B9%E8%B5%9E.gif"alt="emotion_编程猫_点赞"

点赞0


评论


A332A332

顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

点赞0


评论


小白一号Rua小白一号Rua

wow

点赞0


评论


『皮卡丘』『果汁』『皮卡丘』『果汁』

啊啊啊,还是不会

点赞1


评论


全能代码师全能代码师

你的飞机又缓转吗  

点赞0


评论


全能代码师全能代码师

完全没必要其实,不需要创建炮弹石体,直接粒子的不稳定性套上去就可以了

点赞0


评论


IDF哲宇MIKEIDF哲宇MIKE

那个,我看了TQLolita的教程,还是不懂怎么做激光伤害的区域判断,您能来我地图帮忙写一下吗?

点赞0


评论


『皮卡丘』『果汁』『皮卡丘』『果汁』

顶顶

点赞0


评论


2233我吐了2233我吐了

aaaa这对代码萌新不太友好吧)

 

问一下函数里的炮弹是指你发射的东西吗()

 

还有就是是这么调用的吗()

arrow.onEntityContact(({ other }) => {
                if(other.isPlayer && !arrow.hasTag(`${other.player.name}`)){
                    arrow.destroy(arrow,other)
                    let sh = 114514
                    other.hurt(sh)//喵10
                    other.player.directMessage(`你受到了${sh}点伤害,剩余${other.hp},攻击者:${entity.player.name}`)
                }
            })

点赞0


评论


Stephan轩Stephan轩

不是吧怎么被翻出来了

点赞0


评论


老郑子.风尘老郑子.风尘

鹅鹅鹅,完全看不懂啊

点赞0


评论


小白一号Rua小白一号Rua

我挖(((

点赞1


评论


IaeaIaea

azazazz

点赞0


评论


喵喵咪awa喵喵咪awa

收藏

点赞0


评论


小屑鹿小屑鹿

咕咕~

点赞0


评论


屑怪盗屑怪盗

盗墓

点赞0


评论


一光之逆子一一光之逆子一

顶顶顶

点赞0


评论


无敌版滑稽战神无敌版滑稽战神

我的天哪(((

点赞0


评论


无极玄天无极玄天

啊哈哈哈哈哈哈哈哈哈哈哈哈

点赞0


评论


小宏XeLa小宏XeLa

挖坟

点赞1


评论


传说之下ULB--sans传说之下ULB--sans

夹吃灰

点赞0


评论


WitheredWonderWitheredWonder

几百年前的坟贴被您们挖出来了()

点赞0


评论


TAM无敌TAM无敌

、、、、、、、、、、、、

点赞0


评论


夏至初晴哈夏至初晴哈

大佬!收下我的膝盖!!!!!!!

点赞0


评论