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

(Feekood语言介绍与习) (学习) (首页) (开发页面)

—————————— 该阶段同样用到资源: (3D蝎子 ) (3D熊) (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::0;y:0.1;z:0;show:false;IsHitTest:true;//启动鼠标拾取IsHitPass:false; //是否击穿state:””;//怪物状态MI:0;//记录创建怪物移动点Rotation:0;//旋转度owner.MoveTargetX:100000; //目标位置Xowner.MoveTargetZ:100000; //目标位置ZMoveTime: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//怪物X/Z 在计算时间内向目标移动owner.x<:”clear”<:{owner.MoveTargetX,owner.MoveTime};owner.z<:”clear”<:{owner.MoveTargetZ,owner.MoveTime}<::{//<::{};为 在计算时间后才执行owner.MI+=1;//下一个点//判断下一个点是否存在,case($(“MoveData_”+owner.FoePosition)->(owner.MI).x!=null,{ //存在,,下一个点赋值给目标点owner.MoveTargetX=$(“MoveData_”+owner.FoePosition)->(owner.MI).x;owner.MoveTargetZ=$(“MoveData_”+owner.FoePosition)->(owner.MI).z;//并且执行移动owner.state=”Move”;},!($(“MoveData_”+owner.FoePosition)->(owner.MI).x!=null)),{ //没有点后 怪物STANDowner.Action=”STAND”; }; };});};//怪物方向 (设计东南西北方向,所以路径也不一样)FoePosition:””;IsLoaded:=> {//创建成功后执行一次case(owner.FoePosition!=””,{owner.MI=0; //初始下一点 0号点//初始化目标点ownerowner//走起owner.state=”Move”;}); };IsHitT:false;//是否进入生命塔标记IsHitTarget:false;//是否碰到生命塔targetName:””;//生命塔名称IsUpdated:=> //每一吃刷新 都判断是否碰到生命塔{ //判断怪物是否存在,以及生命塔是否存在、碰撞。case(!(owner.IsHitT)&&owner.targetName!=””&&(!owner.clearOneself),{ //碰撞生命塔后 Hit 返回 true-falseowner.IsHitTarget=Hit(owner.targetName,owner.name);});};//碰撞到生命塔IsHitTarget:->{owner.state=””;//怪物状态清空owner.Action=”STAND”;//怪物STAND//把怪物从怪物集中移除$(“FoePanel”).FoeAssemble>>>owner.name;//怪物1S内向上移动owner.y<:{owner.y+9,1000}<::{owner.state=”success”; //怪物成功到达owner.clearOneself=true;//清除自己};owner.isHitT=true;//标记以及到达};//消除自己clearOneself:false;clearOneself:->{Clear(owner.name); };//等级改变后 改变怪物属性Grade:0;Grade:->{owner.Data.Blood=(((owner.Grade-1)*50)+50);//血量owner.Data.Exps=(((owner.Grade-1)*5)+10);//加钱owner};};

移动数据脚本“MoveData.ais”:

//东南西北移动点数据MoveData_East={MoveData_South={MoveData_West={—MoveData_North={–怕走崎岖路,莫想登高峰。

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

相关文章:

你感兴趣的文章:

标签云: