3D塔防游戏实现 2.2 管理建炮塔规则(Feekood语言)
来源:互联网 发布:微信好友定位器软件 编辑:程序博客网 时间:2024/04/30 21:30
(Feekood语言介绍与习)
http://www.wooyoogame.com/doc/index(学习)
http://www.wooyoogame.com(首页)
http://www.feekood.com/ (开发页面)
——————————
该阶段用到了http://www.wooyoogame.com上的资源。
http://www.wooyoogame.com/resource/18 (炮塔)
http://www.wooyoogame.com/resource/5394 (炮弹)
http://www.wooyoogame.com/resource/2 (炮塔纹理)
在上一章创建炮塔中,把炮塔分为两个阶段:
1.创建炮塔精灵按钮、3D模型。
2.管理建炮塔规则(不重叠、高地建设、在3D地图上创建炮塔)。
接下来加介绍第二阶段:
在上一文件夹层级的基础上,我们新增2脚本,“TurretPanel.ais”管理炮塔与“Main.ais”程序主入口。
如图:
首先把“TurretMesh.ais”中最后一句注释掉
下面是“TurretPanel.ais”的代码:
Include("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
0 0
- 3D塔防游戏实现 2.2 管理建炮塔规则(Feekood语言)
- 3D塔防游戏实现 5.1 3D炮塔能攻击了(Feekood语言)
- 3D塔防游戏实现 2.1 创建炮塔(Feekood语言)
- 3D塔防游戏实现 1.1 3D地图(Feekood语言)
- 3D塔防游戏实现 1.2 3D地图视角控制工具(Feekood语言)
- 3D塔防游戏实现 4.1 怪物3D空间自动移动(Feekood语言)
- 3D塔防游戏实现 4.2 3D怪物连续刷新(Feekood语言)
- 3D塔防游戏实现 5.2 3D怪物死亡(Feekood语言)
- 3D塔防游戏实现(完) 5.3 游戏信息UI(Feekood语言)
- 3D塔防游戏实现 3 怪物门以及生命塔(Feekood语言)
- 3D塔防游戏实现 1.3 2D小地图控制3D地图视角(Feekood语言)
- [Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--防御塔(三)之初级炮塔
- unity3D 制作3D塔防游戏(一) 制作地图
- unity3D 制作3D塔防游戏(二) 制作敌人行走路径 无限循环
- 3 .如何使用cocos2d开发一个简单的iphone游戏:旋转炮塔(第二部分)
- Feekood语言介绍
- Feekood语言基础视频教程
- Qt版本-塔防游戏实现一
- OC学习里面的一些概念(七)
- BZOJ系列1193《[HNOI2006]马步距离》题解
- Android开发中从网上获取歌词
- OC学习里面的一些概念(八)
- 手势
- 3D塔防游戏实现 2.2 管理建炮塔规则(Feekood语言)
- IOS开发之OC中String常用API小结
- 加载顺序
- Android 笔试1
- 7 Shader
- UITextField
- 【Unity】代码实现NGUI按钮监听功能
- EasyStruct.js轻松创建可填入式html模板结构
- ios中Block介绍