本帖最后由 xxx19900915 于 2015-3-2 09:54 编辑
(Feekood语言介绍与习)
http://www.wooyoogame.com/doc/index(学习)
http://www.wooyoogame.com(首页)
http://www.feekood.com/ (开发页面) ——————————
在上一章创建炮塔中,把炮塔分为两个阶段:
1.创建炮塔精灵按钮、3D模型。
2.管理建炮塔规则(不重叠、高地建设、在3D地图上创建炮塔)。
接下来加介绍第二阶段:
在上一文件夹层级的基础上,我们新增2脚本,“TurretPanel.ais”管理炮塔与“Main.ais”程序主入口。
如图:
首先把“TurretMesh.ais”中最后一句注释掉
 下面是“TurretPanel.ais”的代码: I- nclude("TurretSpriteBtn.ais"); //引入精灵按键
- Include("TurretMesh.ais");//引入炮塔模型基础数据
- //创建一个单独的炮塔模型,用以创建时移动与对比用
- Create(CreateTurretTab={
- type:"mesh";
- model:"TurretA1model";
- texture:"TurretImg";
- SimplerState:"wrap";
- Shader:"phong";
- Scale:{0.6,0.6,0.6};
- show:false;
- Rotation:180;
- ScopeRadius: 2;
- ShowScope: true;
- });
- //炮塔管理面板
- TurretPanel={
- CreateTab:false; //是否创建标志
- CreateTab:->{ //属性改变时触发事件
- case(!owner.CreateTab,
- { //创建完成后恢复炮塔精灵按钮的图片
- $("TurretASpriteBtn").texture="TurretAImg";
- });
- };
- target:"";//创建炮塔类型
- TurretAssemble:{};//已经创建炮塔的名字
- targetXYZ:{}; //创建炮塔的空间坐标
- targetXYZ:-> //坐标改变时触发
- {
- case(size(owner.targetXYZ)>0,
- { //创建炮塔
- TurretName=create({
- x:owner.targetXYZ.x,
- y:owner.targetXYZ.y,
- z:owner.targetXYZ.z,
- Scale:{0.6,0.6,0.6};
- model:owner.target+"1model";
- }::TurretBaseMesh);
- //把创建的炮塔放入TurretAssemble变量中
- owner.TurretAssemble<<TurretName;
- });
- //清空坐标
- owner.targetXYZ={};
- };
- };
复制代码
因为所以到3D地图上点击、移动所以“3D地图/MainMap.ais”脚本进行补充代码如下:(增加了IsClick与IsMouseMove事件) - include("MapBase.ais");//引入地图基础文件
- include("../navcontrol/UiPanel.ais");//应用视角文件
- include("2DMap/2Dmap.ais");//引入2D地图
- create({
- //主地图名称 可以通过Getdata("MainMap")获取 2D地图中用到
- name:"MainMap";
- opposite:{};
- opposite:->{ //通过2D地图传送比例过来
- //3D地图的长宽都为32格,然后每格大小为4 所以总的长宽都为120左右
- //所以3D地图的四个区域的大小都是60*60
- TargetX=60*(owner.opposite.X);//根据传过来的比例算3D空间的X
- TargetZ=60*(owner.opposite.Z);//根据传过来的比例算3D空间的Z
- TargetY=MainCamera.Position->1;//获取当前视角的3D空间的Y
- //控制500毫秒内移动到目标3D视角中眼镜的空间坐标
- MainCamera.Position<:{{TargetX,TargetY,TargetZ+40},500};
- //控制500毫秒内移动到目标3D视角中目标物的空间坐标
- MainCamera.Target<:{{TargetX,0,TargetZ},500};
- };
- IsHitTest:true; //开始鼠标点击
- IsClick:=> //点击3D地图地面
- { //判断炮塔面板中的CreateTab属性是否为true,以及内部属性Createtab
- case($("TurretPanel").CreateTab==true&&owner.Createtab,
- { //向炮塔面板传递创建完成信息
- $("TurretPanel").CreateTab=false;
- //向炮塔面板传递创建空间点信息
- $("TurretPanel").targetXYZ={x:owner.hitx,y:owner.hity,z:owner.hitz};
- //内部属性置为false
- owner.Createtab=false;
- //单独的炮塔隐藏
- CreateTurretTab.show=false;
- });
- };
- Createtab:true;//炮塔是否能创建标记
- IsMouseMove:=> { //鼠标移动事件
- //判断炮塔面板中的CreateTab属性是否为true
- case($("TurretPanel").CreateTab==true,
- {
- owner.Createtab=true; //初始化Createtab为true
- //单独的对比炮塔属性赋值
- CreateTurretTab.texture="TurretImg"; //炮塔纹理
- CreateTurretTab.show=true; //炮塔显示
- CreateTurretTab.x=owner.hitx; //炮塔X坐标改变为鼠标点
- CreateTurretTab.y=owner.hity; //炮塔Y坐标改变为鼠标点
- CreateTurretTab.z=owner.hitz; //炮塔Z坐标改变为鼠标点
- //炮塔在高地(5)以下不能建造
- case(CreateTurretTab.y<4.9,
- {
- CreateTurretTab.texture="clear";//去掉炮塔纹理
- owner.Createtab=false;//设置内部属性Createtab为不能创建
- });
- //遍历查看创建的炮塔是否与已经创建的重叠
- foreach(TurretPanel.TurretAssemble,
- { //hit为检测是否碰撞函数(系统内置)
- case(hit(CreateTurretTab.name,value),
- {
- CreateTurretTab.texture="clear";//去掉炮塔纹理
- owner.Createtab=false;//设置内部属性Createtab为不能创建
- });
- });
- });
- };
- }::MapA);//创建地图,::为继承
复制代码
新增一个主脚本来控制整个游戏入口“Main.ais”。
代码如下: - Include("3D地图/MainMap.ais");//引入3D地图模块
- Include("Turret/TurretPanel.ais");//引入炮塔模块
复制代码
该阶段截图:
    该阶段源码链接: http://pan.baidu.com/s/1qWDhUZq 密码: nnsl
|