猫史档案馆


大佬代码!!!

用户:陌路离殇已退岛陌路离殇已退岛查看:5 回复:1 评论:5 创建时间:2020-12-22T21:21:37


world.onPlayerJoin(({entity})=>{

    entity.player.scale=1.8;

    entity.player.canFly=true;

    entity.enableDamage=true;

    entity.maxHp=1000;

    entity.hp=entity.maxHp;

    entity.mass=10;

    entity.player.movementBounds=new Box3Bounds3(new Box3Vector3(-50, -50, -50), new Box3Vector3(258, 258, 258));

})

 

var pt=world.querySelector(".pt");

var st=world.querySelector(".喵");

var pd=world.querySelector(".lchr");

function spawn(){

    var a=world.createEntity();

    var posx=Math.random()*186;

    var posz=Math.random()*186;

    a.position.set(posx,11.5,posz);

    a.mesh=pt.mesh;

    a.meshScale=world.querySelector(".firer").meshScale;

    a.addTag("firer");

    a.type="双发加农炮";

    a.enableDamage=true;

    a.collides=false;

    a.gravity=false;a.fixed=true;

    var b=world.createEntity();

    b.position.set(posx,9.6,posz);

    b.mesh=st.mesh;

    b.meshScale=world.querySelector(".喵").meshScale;

     b.addTag("喵")

    b.gravity=false;b.fixed=true;

    a.喵=b;

 

}

 

for(let i=0;i<15;i++){

    if(Math.random()<0.5)

    spawn();

    else

    spawnMach();

}

 

 

const MeshScale = [0.0625,0.0625,0.0625]

 

 

const Quat = new Box3Quaternion(0,-1,0,1)// box引擎默认的旋转朝向

let allPlayers = []

let allZombies = []//所有僵尸

world.onTick(async ({tick}) => {//每秒16个tick

    if(tick%32===0){//每16个tick运行一次, 而不是每个tick都运行,节省性能

        allPlayers = world.querySelectorAll('player')

        allZombies = world.querySelectorAll('.firer')

    }

    allZombies.forEach(async (e) => {

        let zomPos = e.position

        var ee=e.lchr;

       

        if(tick%10===0){//每16个tick运行一次, 而不是每个tick都运行,节省性能

            let target = allPlayers.sort((a,b)=>{//寻找距离最近的玩家

               return a.position.distance(zomPos)-b.position.distance(zomPos)

            })[0]

            if(target){//地图如果还有玩家

                e.target = target

            }

        }

        if(e.target && !e.target.destroyed&&e.target.position.distance(e.position)<40&&e.target.hp>0){//如果要追杀的玩家还没有离开地图

           

            var direction = e.target.position.sub(zomPos);

            var orientation = Quat.rotateY(Math.atan2(direction.z, direction.x))

           

            e.meshOrientation.copy(orientation)

            if(e.type="双发加农炮"&&tick%32==0){

            for(let i=0;i<=1;i++){

            var c=world.createEntity();

            c.position.set(e.position.x,11.7,e.position.z);

            c.mesh=pd.mesh;

            c.gravity=true;c.fixed=false;

            c.addTag("lchr");

            c.velocity.x=direction.x/5;

            c.velocity.z=direction.z/5;

 

            c.mass=0.01;

            setTimeout(()=>{c.destroy()},2000)

            await sleep(200);

            }

           

            }else if(e.type="机关喵"&&tick%16==0){

            var c=world.createEntity();

            c.position.set(e.position.x,11.7,e.position.z);

            c.mesh="mesh/venus.vb";

            c.gravity=true;c.fixed=false;

            c.addTag("lchr");

            c.velocity.x=direction.x/3;

            c.velocity.z=direction.z/3;

            c.mass=0.01;

            setTimeout(()=>{c.destroy()},2000)

           

            }

        }

    })

})

world.onEntityContact(({entity,other})=>{

    if(entity.hasTag("lchr")&&other.isPlayer){

        other.hurt(10);

        entity.destroy();

    }else if(entity.isPlayer&&other.hasTag("喵")){

        entity.hurt(1000);

        world.say(entity.player.name+"触碰了炮台被电喵了")

    }

})

world.onClick(({entity,clicker})=>{

    if(entity.hasTag("firer")){

        entity.hurt(5);

        if(entity.hp<=0){

            entity.喵.meshColor.set(0,0,0,1)

           

            world.say(clicker.player.name+"干掉了一个"+entity.type);

            entity.destroy();

            if(Math.random()<0.5)

    spawn();

    else

    spawnMach();

           

        }

    }

})

world.onDie(async({entity})=>{

    if(entity.isPlayer){

        entity.player.directMessage("你将在三秒后复活")

        await sleep(3000);

        entity.hp=1000;

        world.say(entity.player.name+"复活了")

    }

})

 


回复

上一页1 页 / 共 1下一页
陌路离殇已退岛陌路离殇已退岛

能看懂吗?

点赞0


评论