网页私服论坛

 找回密码
 立即注册
搜索
查看: 33898|回复: 0

3D塔防游戏实现 4.2 3D怪物连续刷新(Feekood语言)|GameRes游资网

[复制链接]

1

主题

7

帖子

23

积分

新手上路

Rank: 1

积分
23
发表于 2015-3-5 23:21:44 | 显示全部楼层 |阅读模式
(Feekood语言介绍与习)
http://www.wooyoogame.com/doc/index(学习)
http://www.wooyoogame.com(首页)
http://www.feekood.com/ (开发页面)
——————————
该阶段同样用到http://www.wooyoogame.com资源:
http://www.wooyoogame.com/resource/5399 (3D蝎子 )
http://www.wooyoogame.com/resource/5075 (3D熊)
http://www.wooyoogame.com/resource/5143 (3D蜘蛛)
—–
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
本阶段主要文件截图:

效果截图:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
正文:
补充上一微博脚本“FoeMoveBase.ais”:
    //引入怪物模型
    Foe1=IncludeAisx(":/Wooyoo/window7/SCORPION.aisx");
    Foe2=IncludeAisx(":/Wooyoo/dosdos/BEAR.aisx");
    Foe3=IncludeAisx(":/Wooyoo/window7/CRYPTFIEND.aisx");
    //模型纹理Mipmap化
    CreateMipmap(Foe1.texture);
    CreateMipmap(Foe2.texture);
    CreateMipmap(Foe3.texture);
    // 引入移动点数据
    Include("MoveData.ais");

    FoeMoveBase={
         //怪物数据
         Data:{
              Blood:50;
              Exps:10;
              Grade:1;
              speed:3;
         };
         Action:"STAND";//怪物动作
         x:0;y:0.1;z:0;
         show:false;
         IsHitTest:true;//启动鼠标拾取
         IsHitPass:false; //是否击穿
         state:"";//怪物状态
         MI:0;//记录创建怪物移动点
         Rotation:0;//旋转度
         owner.MoveTargetX:100000; //目标位置X
         owner.MoveTargetZ:100000; //目标位置Z
         MoveTime:0;//记录移动时间
         leng2:0; //记录距离的2次方
         //A==> 为 当A为true时  会每一次刷新都执行  
         //怪物移动状态,并且被创建成功
         (owner.state=="Move"&& owner.name!=null)==>
         {  owner.state=""; //状态清空
            case(owner.MoveTargetX!=100000&&owner.MoveTargetZ!=100000,
            {   owner.Action="RUN";  //设置怪物跑起来
                //计算当前位置与目标位置 的角度,并让怪物旋转方向
                owner.Rotation=Angle2(owner.MoveTargetZ-owner.z,owner.MoveTargetX-owner.x);
                //计算当前位置与目标位置的距离的平方
                owner.leng2=pow(owner.MoveTargetZ-owner.z,2)+pow(owner.MoveTargetX-owner.x,2);
                owner.MoveTime=0;//初始化移动时间
                //根据上述距离 与 自身 速度 计算移动时间
                owner.MoveTime=Sqrt(owner.leng2)/owner.Data.speed*500;
                //怪物X/Z 在计算时间内向目标移动
                owner.x0.x;
                owner.MoveTargetZ=$("MoveData_"+owner.FoePosition)->0.z;
                //走起
                owner.state="Move";
            });
         };
         IsHitT:false;//是否进入生命塔标记
         IsHitTarget:false;//是否碰到生命塔
         targetName:"";//生命塔名称
         IsUpdated:=>  //每一吃刷新 都判断是否碰到生命塔
         {   //判断怪物是否存在,以及生命塔是否存在、碰撞。
             case(!(owner.IsHitT)&&owner.targetName!=""&&(!owner.clearOneself),
             {   //碰撞生命塔后 Hit  返回  true-false
                 owner.IsHitTarget=Hit(owner.targetName,owner.name);
             });
         };
         //碰撞到生命塔
         IsHitTarget:->
         {   
              owner.state="";//怪物状态清空
              owner.Action="STAND";//怪物STAND
              //把怪物从怪物集中移除
              $("FoePanel").FoeAssemble>>>owner.name;
              //怪物1S内向上移动
              owner.y{
           owner.Data.Blood=(((owner.Grade-1)*50)+50);//血量
           owner.Data.Exps=(((owner.Grade-1)*5)+10);//加钱
           owner.Data.Grade=owner.Grade;//等级
        };
    };
复制代码移动数据脚本“MoveData.ais”:
    //东南西北移动点数据
    MoveData_East={
        {x:46;z:0},
        {x:46;z:-46},
        {x:25;z:-46},
        {x:25;z:0},
        {x:0;z:0}};

    MoveData_South={
        {x:0;z:46},
        {x:46;z:46},
        {x:46;z:25},
        {x:0;z:25},
        {x:0;z:0}};

    MoveData_West={
        {x:-46;z:0},
        {x:-46;z:46},
        {x:-25;z:46},
        {x:-25;z:0},
        {x:0;z:0}};

    MoveData_North={
        {x:0;z:-46},
        {x:-46;z:-46},
        {x:-46;z:-25},
        {x:0;z:-25},
        {x:0;z:0}};
复制代码怪物刷新管理面板“FoePanel.ais”:
<ol>include("FoeMoveBase.ais");//引入怪物移动基础
FoePanel={  //怪物面板
    FoeAssemble:{};//存储创建的怪物名字
    FoeData:{      //刷新怪物的数据  Foe1 为怪物1  可以更换别的怪物
        //方向、怪物类型、怪物数量、怪物等级
        {"East","Foe1",20,1};
        {"South","Foe2",20,2};
        {"West","Foe3",20,3};
        {"North","Foe1",20,4};
        {"East","Foe2",20,5};
        {"South","Foe3",20,6};
        {"West","Foe1",20,7};
        {"North","Foe2",20,8};
        {"East","Foe3",20,9};
        {"South","Foe1",20,10};
    };
    FoeCheckpoint:1;//记录怪物波数
    Direction:""://记录方向
    FoeType:0;//记录怪物类型
    FoeNumber:0;//记录怪物数量
    FoeTime:0;//怪物刷新间隔变量
    FoeGrade:1;//记录怪物等级
    NewFoeNumber:0;//本波怪物数量
    FoeRefurbish:false; //怪物是否刷新
    FoeRefurbish:=>{    //怪物刷新
        //怪物波数数据存在
        case(Size(owner.FoeData->(owner.FoeCheckpoint-1))>0,
        {   //根据怪物波数数据,初始化本波数据
            owner.Direction=owner.FoeData->(owner.FoeCheckpoint-1)->0;
            owner.FoeType=owner.FoeData->(owner.FoeCheckpoint-1)->1;
            owner.FoeNumber=owner.FoeData->(owner.FoeCheckpoint-1)->2;
            owner.FoeGrade=owner.FoeData->(owner.FoeCheckpoint-1)->3;
            //本波怪物数据出书啊
            owner.NewFoeNumber=0;
            //面板状态。刷新开启
            owner.State="Refurbish";
        });
    };
    RefurbishTab:true;//怪物刷新标记量  后续用于设置怪物完状态
    FoePositionXZ:{z:0;x:0;};
    State:"";//状态
    //A==> 为 当A为true时  会每一次刷新都执行  
    //Refurbish状态  并且 能刷新 RefurbishTab=true
    (owner.State=="Refurbish"&&owner.RefurbishTab)==>{
        owner.State=""; //清空刷新状态
        owner.FoeTime=0; //初始化话刷新间隔时间标记
        owner.FoeTime

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|网页私服论坛  

GMT+8, 2019-7-19 15:58 , Processed in 0.316937 second(s), 31 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表