游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4054|回复: 1

(feekood语言)3D塔防游戏实现 1.1 3D地图

[复制链接]

8

主题

9

帖子

804

积分

高级会员

Rank: 4

积分
804
发表于 2015-2-27 09:07:24 | 显示全部楼层 |阅读模式
本帖最后由 xxx19900915 于 2015-2-27 11:12 编辑

Feekood语言介绍(http://www.wooyoogame.com/doc/index
正文


3D地图(3D地图有例子脚本:”:/Samples/地形/3D地形/HitTerrain3D.ais”)
我的3D地图的源码如下:
(用到的图)

基础地图
MapBase.ais
  1. LoadImage("Map1Img","1.png");//草色
  2. LoadImage("Map2Img","2.png");//黄色石头
  3. LoadImage("Map3Img","3.png");//褐色石头
  4. LoadImage("Map4Img","4.png");//沙子
  5. CreateMipmap("Map1Img");//创建草色mipmap图片
  6. CreateMipmap("Map2Img");//创建黄色石头mipmap图片
  7. CreateMipmap("Map3Img");//创建褐色石头mipmap图片
  8. CreateMipmap("Map4Img");//创建沙子mipmap图片
  9. Include("MapDataA.ais");//地图高低数据组
  10. MapA={
  11.     type:"tex4Terrain3D";
  12.     width:32;//地图宽度
  13.     height:32;//地图长
  14.     Texture1:"Map1Img";//草色mipmap
  15.     Texture2:"Map2Img";//黄色石头mipmap
  16.     Texture3:"Map3Img";//褐色石头mipmap
  17.     Texture4:"Map4Img";//沙子mipmap
  18.     GridWidth:4;//格子宽度
  19.     GridHeight:4;//格子长度
  20.     SimplerState:"wrap";
  21.     //Simpler:"point";
  22.     Column:32;
  23.     Row:32;
  24.     cullMode:"none";
  25.     shader:"phong";
  26.     //生成地面草、黄石头、褐色石头、沙的比例
  27.     Data:set((this.width+1)*(this.height+1),
  28.     {
  29.         w1:probRand(50,1,50,0),
  30.         w2:probRand(90,1-this.w1,10,0),
  31.         w3:1-(this.w1+this.w2),
  32.         w4:0
  33.     });
  34.     //地图格子中的高度,用以生成地形高低
  35.     Hights:set((this.height+1)*(this.height+1),5);
  36.     x:this.width*this.GridWidth/-2;//地图中心位置X设置
  37.     y:0;
  38.     z:this.height*this.GridHeight/-2;//地图中心位Z置设置
  39. };
  40. MapA.Hights=MapDataA;//设置地图高低数据
复制代码


地图高度数据
MapDataA.ais

  1. MapDataA=
  2. {5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
  3. ,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
  4. ,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
  5. ,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5
  6. ,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5
  7. ,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5
  8. ,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5
  9. ,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5
  10. ,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5
  11. ,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5
  12. ,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5
  13. ,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5
  14. ,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5
  15. ,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5
  16. ,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5
  17. ,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0
  18. ,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0
  19. ,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0
  20. ,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
  21. ,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
  22. ,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
  23. ,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5
  24. ,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5
  25. ,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5
  26. ,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5
  27. ,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5
  28. ,5,5,5,0,0,0,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5
  29. ,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5
  30. ,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5
  31. ,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5
  32. ,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
  33. ,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
  34. ,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5};
复制代码


因为不好控制视角,所以加一个视角设置
SetCamera.ais
  1. //初始视角
  2. initialiseCamera=
  3. {
  4.     Position:{0,45,40};
  5.     Target:{0,0,0};
  6.     Up:{0,1,0};
  7.     AllowVRotation:false;
  8.     AllowHRotation:true;
  9.     Field:1;
  10.     Near:0.01;
  11.     Far:200.0;
  12. };
  13. //赋值主视角=初始视角
  14. MainCamera=initialiseCamera;
  15. //视角设置生效
  16. SetCamera(MainCamera);
复制代码

主函数
MainMap.ais
  1. include("MapBase.ais");//引入地图基础文件 include("SetCamera.ais");//应用视角文件 create({}::MapA);//创建地图,::为继承
复制代码

最终效果:

文件夹:

————————–完
上一篇:在线开发与编译的脚本语言
游戏链接点击跳转
运行的时候需要装一个插件:(研究了一下,其实就安装了一个“Microsoft Silverlight”以及打开“3D图像”的权限)






3

主题

5

帖子

3214

积分

论坛元老

Rank: 8Rank: 8

积分
3214
发表于 2015-2-28 00:26:06 | 显示全部楼层
楼主好厉害啊!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-25 20:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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