(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.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)),
- { //没有点后 怪物STAND
- owner.Action="STAND";
- };
- };
- });
- };
- //怪物方向 (设计东南西北方向,所以路径也不一样)
- FoePosition:"";
- IsLoaded:=> { //创建成功后执行一次
- case(owner.FoePosition!="",{
- owner.MI=0; //初始下一点 0号点
- //初始化目标点
- owner.MoveTargetX=$("MoveData_"+owner.FoePosition)->0.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.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.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”: - 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<:{0,1,1000}<::{ //一秒后刷新
- //调用2D地图中的四个方向的怪物条显示
- $("Map2DFoeShow"+owner.Direction).show=true;
- owner.FoePositionXZ={z:0;x:0};//初始化刷新点
- //根据怪物信息在对应的方位刷新怪物
- case(owner.Direction=="East",
- {
- owner.FoePositionXZ={z:1;x:55};
- },owner.Direction=="South",
- {
- owner.FoePositionXZ={z:55;x:1};
- },owner.Direction=="West",
- {
- owner.FoePositionXZ={z:1;x:-55};
- },owner.Direction=="North",
- {
- owner.FoePositionXZ={z:-55;x:1};
- });
- //创建怪物 运用多继承
- //::owner.FoePositionXZ 刷新坐标
- //::FoeMoveBase 怪物移动Base
- //::$(owner.FoeType)); //怪物类型
- owner.FoeAssemble<<create({Grade:owner.FoeGrade;FoePosition:owner.Direction;targetName:LifeTower.name;}::owner.FoePositionXZ::FoeMoveBase::$(owner.FoeType));
- owner.NewFoeNumber+=1;//本波怪物数量+1
- }<::{
- //属性玩怪物后执行
- //判断怪物数量
- case(owner.NewFoeNumber<owner.FoeNumber,
- { //第一个刷新的怪物
- case(owner.NewFoeNumber==1,
- { //向怪物信息框传递怪物信息
- GameFoeInfoCtl.FoeInfo=Getdata(owner.FoeAssemble->0).Data;
- });
- //刷新下一个怪物
- owner.State="Refurbish";
- },!(owner.NewFoeNumber<owner.FoeNumber),
- { //波数+1
- owner.FoeCheckpoint+=1;
- //是否刷新下一波
- owner.ISRefurbishNext=true;
- });
- };
- };
- // //刷新下一波时间变量
- RefurbishTime:0;
- RefurbishTabS:false;//下一波刷新初始化变量
- RefurbishTabS:=>{ //
- owner.RefurbishTime=0; //初始化时间变量
- GameFoeInfoCtl.FoeInfo={a:1};//清空怪物信息
- owner.RefurbishTime<:{0,1,20000}<::{
- owner.FoeRefurbish=true; //20秒后刷新 初始化本波怪物信息
- };
- };
- //刷新下一波变量
- ISRefurbishNext:false;
- owner.ISRefurbishNext==>{//刷新下一波
- owner.ISRefurbishNext=false;
- //当前怪物级为0 并且 能刷新 RefurbishTab = true
- case(size(owner.FoeAssemble)==0&&owner.RefurbishTab,
- { //启动下一波刷新时间间隔
- owner.RefurbishTabS=true;
- },size(owner.FoeAssemble)!=0,
- { //本波还有怪物,所以继续判断是否刷新下一波
- owner.ISRefurbishNext=true;
- });
- };
- };
- //开始游戏按钮
- GameButtonCtl=
- {
- Type:"Button"; //按钮类型
- Text:"开始游戏"; //显示click文字
- X:50%; //水平居中
- Y:50%; //垂直居中
- Width:150; //宽度100像素
- Height:60; //高度60像素
- FontSize:16; // 文字大小
- FontBold:true; // 文字是否粗体
- FontBrush:"#ff03FCBC"; // 文字颜色
- BorderRadius:{10,10,10,10};
- CenterX:50%;
- CenterY:50%;
- BackgroundBrush:"#ff0D0D0D";//背景色白色
- IsClick:=> //设置click事件触发器,click按钮打印"click"
- {
- case(owner.Text=="重新开始",
- { owner.show=false;
- //是否能刷新怪物标记 设为true
- FoePanel.RefurbishTab=true;
- //开启怪物刷新
- FoePanel.FoeRefurbish=true;
- },owner.Text=="开始游戏",
- {
- owner.show=false;
- //开启怪物刷新
- FoePanel.FoeRefurbish=true;
- });
- };
- };
- Create(GameButtonCtl); //创建按钮
- //怪物信息按钮
- GameFoeInfoCtl=
- {
- Type:"Button"; //按钮类型
- Text:'怪物信息\r\n'; //显示click文字
- X:0; //水平居中
- Y:0; //垂直居中
- Width:100; //宽度100像素
- Height:90; //高度60像素
- FontSize:16; // 文字大小
- FontBold:true; // 文字是否粗体
- FontBrush:"#ff03FCBC"; // 文字颜色
- BorderRadius:{10,0,0,0};
- BorderBrush:"#ffffffff"; // 边框颜色画刷
- BorderThickness:{1,1,1,1};
- Padding:{5,5,0,0};
- HAlign:"left";
- VAlign:"top";
- IsTopToBottom:false;
- IsLeftToRight:false;
- FoeInfo:{};
- FoeInfo:->{
- case(size(owner.FoeInfo)>1,
- {
- owner.text='怪物信息\r\n血量:'+text(owner.FoeInfo.Blood)+'\r\n等级:'+text(owner.FoeInfo.Grade)+'\r\n金钱:'+text(owner.FoeInfo.Exps);
- },size(owner.FoeInfo)==1,
- {
- owner.text='怪物信息';
- });
- owner.FoeInfo={};
- };
- };
- Create(GameFoeInfoCtl); //创建按钮
复制代码然后在主函数中加怪物刷新面板“Main.ais”: - Include("3D地图/MainMap.ais");//引入3D地图模块
- Include("Turret/TurretPanel.ais");//引入炮塔模块
- Include("OtherTower/TransmissionTower.ais"); //引入怪物们
- Include("OtherTower/LifeTower.ais");//引入中间生命塔
- Include("Foe/FoePanel.ais");//引入怪物刷新面板
复制代码该阶段源码链接: http://pan.baidu.com/s/1kTpBCGn 密码: wi13
|