猫史档案馆


火箭筒代码

用户:好奇的土岩龙HHaS好奇的土岩龙HHaS查看:1 回复:2 评论:1 创建时间:2022-06-23T14:18:09


world.onPlayerJoin(({entity})=>{
    entity.enableDamage = true //允许实体受伤
    entity.xuixi = 0 //武器冷却变量
    entity.player.addWearable({
        bodyPart: Box3BodyPart.RIGHT_HAND,
        mesh: 'mesh/单兵火箭筒.vb', //先要在地图放一个单兵火箭筒
    })
})

world.onPress(async({entity, button, raycast})=>{
    if(button!==Box3ButtonType.ACTION0)return
     if(entity.xuixi!=0)return
            entity.xuixi = 1
            var ballf = spawnEntity(entity.position.x+raycast.direction.x, entity.position.y+raycast.direction.y, entity.position.z+raycast.direction.z,"mesh/喵炮弹.vb",1/16);//先要在地图放一个喵炮弹
            ballf.velocity.x += raycast.direction.x*7; ballf.velocity.y += raycast.direction.y*7; ballf.velocity.z += raycast.direction.z*7;//把乘数放大可以让实体飞得更快!注意xyz放大的数都要一样
            ballf.meshEmissive = 1
            var attcker = entity
            ballf.onVoxelContact(({x,y,z,entity,voxel})=>{
            const voxelName = voxels.name(voxel); 
            if (voxelName==='water')return
            entity.destroy()
            sphere('air',x,y,z,r)
            voxels.setVoxel(x-1,y,z,'lava02')
            voxels.setVoxel(x+1,y,z,'lava02') 
            voxels.setVoxel(x-5,y,z+3,'lava02')
            voxels.setVoxel(x+1,y,z-3,'lava02')
            voxels.setVoxel(x-3,y,z-3,'lava02')
            voxels.setVoxel(x,y-3,z,'lava02')
            for(var x=0;x<257;x++){
                for(var z=0;z<257;z++){
                    voxels.setVoxel(x,0,z,'stone')
                }
            }
            entity.xuixi = 0 
    }) 
    ballf.onEntityContact(({entity,other})=>{ 
                if(other.isPlayer){ 
                    entity.destroy()
                    if(other.hp<=0)return
                    other.hurt(250)
                    if(other.hp<=0){
                        if(attcker.player.name!==other.player.name){
                            world.say(`${attcker.player.name}使用火箭筒干掉了${other.player.name}`)
                        }else if(attcker.player.name===other.player.name){
                            world.say(`${attcker.player.name}玩火箭筒时失手从而造成自身的喵亡~`)
                        }
                    }
                }
           })
           await sleep(500)
            entity.player.directMessage('换弹中~ 5秒~')
            await sleep(4000)
            ballf.destroy()
            await sleep(1000)
            entity.xuixi = 0 
            entity.player.directMessage('换弹完毕')
})
const r = 3
function sphere(vox, cx, cy, cz, radius){
    let xend = cx+radius
    let yend = cy+radius
    let zend = cz+radius
    for(let x=cx-radius;x<=xend;x++){
    for(let y=cy-radius;y<=yend;y++){
    for(let z=cz-radius;z<=zend;z++){
        let dx = x-cx;
        let dy = y-cy;
        let dz = z-cz;
        if(Math.round(Math.sqrt(dx*dx+dy*dy+dz*dz)) <= radius){
            voxels.setVoxel(x,y,z,vox)
        }
}}}}
function sphere2(vox, cx, cy, cz, radius){
    let xend = cx+radius
    let yend = cy+radius
    let zend = cz+radius
    for(let x=cx-radius;x<=xend;x++){
    for(let z=cz-radius;z<=zend;z++){
        let dx = x-cx;
        let dy = cy-cy;
        let dz = z-cz;
        if(Math.round(Math.sqrt(dx*dx+dy*dy+dz*dz)) <= radius){
            voxels.setVoxel(x,cy,z,vox)
        }
    }}
}

function spawnEntity(x,y,z,meshName,meshScale){
    return world.createEntity({
        mesh:meshName,//模型名
        collides:true,//能碰撞
        fixed:false,//固定
        gravity:true,//受重力影响
        meshScale:[meshScale,meshScale,meshScale],//xyz放大倍数
        position:[x,y,z],//位置坐标
    })
} 


回复

上一页1 页 / 共 1下一页
SCS_user_i1eril0dUySCS_user_i1eril0dUy

沙发

点赞0


评论


Programming轩Programming轩

e报错

 

点赞0


评论