游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4158|回复: 0

3D塔防游戏实现 4.1 怪物3D空间自动移动(Feekood语言)

[复制链接]

8

主题

9

帖子

804

积分

高级会员

Rank: 4

积分
804
发表于 2015-3-4 21:40:10 | 显示全部楼层 |阅读模式
本帖最后由 xxx19900915 于 2015-3-4 22:08 编辑

(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蝎子)

❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤
该阶段的功能:3D模型怪物,能自动的从出生点 匀速的运动到目标集合点(支持多个目标点,逐一移动);

该阶段就一个脚本文件“FoeMoveBase.ais”:
其源码如下:

  1. //引入怪物模型
  2. Foe1=IncludeAisx(":/Wooyoo/window7/SCORPION.aisx");
  3. //模型纹理Mipmap化
  4. CreateMipmap(Foe1.texture);
  5. //移动数据
  6. MoveData_North={
  7.     {x:0;z:-46},
  8.     {x:-46;z:-46},
  9.     {x:-46;z:-25},
  10.     {x:0;z:-25},
  11.     {x:0;z:0}};

  12. FoeMoveBase={
  13.      //怪物数据
  14.      Data:{
  15.           Blood:50;
  16.           Exps:10;
  17.           Grade:1;
  18.           speed:3;
  19.      };
  20.      Action:"STAND";//怪物动作
  21.      x:0;y:0.1;z:0;
  22.      show:false;
  23.      IsHitTest:true;//启动鼠标拾取
  24.      IsHitPass:false; //是否击穿
  25.      state:"";//怪物状态
  26.      MI:0;//记录创建怪物移动点
  27.      Rotation:0;//旋转度
  28.      owner.MoveTargetX:100000; //目标位置X
  29.      owner.MoveTargetZ:100000; //目标位置Z
  30.      MoveTime:0;//记录移动时间
  31.      leng2:0; //记录距离的2次方
  32.      //A==> 为 当A为true时  会每一次刷新都执行  
  33.      //怪物移动状态,并且被创建成功
  34.      (owner.state=="Move"&& owner.name!=null)==>
  35.      {  owner.state=""; //状态清空
  36.         case(owner.MoveTargetX!=100000&&owner.MoveTargetZ!=100000,
  37.         {   owner.Action="RUN";  //设置怪物跑起来
  38.             //计算当前位置与目标位置 的角度,并让怪物旋转方向
  39.             owner.Rotation=Angle2(owner.MoveTargetZ-owner.z,owner.MoveTargetX-owner.x);
  40.             //计算当前位置与目标位置的距离的平方
  41.             owner.leng2=pow(owner.MoveTargetZ-owner.z,2)+pow(owner.MoveTargetX-owner.x,2);
  42.             owner.MoveTime=0;//初始化移动时间
  43.             //根据上述距离 与 自身 速度 计算移动时间
  44.             owner.MoveTime=Sqrt(owner.leng2)/owner.Data.speed*500;
  45.             //怪物X/Z 在计算时间内向目标移动
  46.             owner.x<:"clear"<:{owner.MoveTargetX,owner.MoveTime};
  47.             owner.z<:"clear"<:{owner.MoveTargetZ,owner.MoveTime}<::{
  48.                 //<::{};为 在计算时间后才执行
  49.                 owner.MI+=1;//下一个点
  50.                 //判断下一个点是否存在,
  51.                 case($("MoveData_"+owner.FoePosition)->(owner.MI).x!=null,
  52.                 {  //存在,下一个点赋值给目标点
  53.                    owner.MoveTargetX=$("MoveData_"+owner.FoePosition)->(owner.MI).x;
  54.                    owner.MoveTargetZ=$("MoveData_"+owner.FoePosition)->(owner.MI).z;
  55.                    //并且执行移动
  56.                    owner.state="Move";
  57.                 },!($("MoveData_"+owner.FoePosition)->(owner.MI).x!=null)),
  58.                 {  //没有点后 怪物STAND
  59.                    owner.Action="STAND";  
  60.                 };   
  61.             };
  62.         });     
  63.      };
  64.      //怪物方向 (设计东南西北方向,所以路径也不一样)
  65.      FoePosition:"";
  66.      IsLoaded:=> {     //创建成功后执行一次
  67.         case(owner.FoePosition!="",{  
  68.             owner.MI=0;   //初始下一点 0号点
  69.             //初始化目标点
  70.             owner.MoveTargetX=$("MoveData_"+owner.FoePosition)->0.x;
  71.             owner.MoveTargetZ=$("MoveData_"+owner.FoePosition)->0.z;
  72.             //走起
  73.             owner.state="Move";
  74.         });
  75.      };
  76. };
  77. //目前只有North数据。下一章  会完整。继承怪物移动base,以及Foe1蝎子
  78. //更换怪物,只需要继承不同的怪物
  79. create({FoePosition:"North";}::FoeMoveBase::Foe1);

  80. //为有对比,创建3D线段做参考
  81. lineData=
  82. {   
  83.     type:"line3d";
  84.     Items:{{0;0.1;0;},
  85.            {0,0.1,-46},
  86.            {-46,0.1,-46},
  87.            {-46,0.1,-25},
  88.            {0,0.1,-25},
  89.            {0,0.1,0}};
  90.     Color:{1,1,0,1};
  91. };
  92. Create(lineData);
复制代码

效果图:

因为是动态移动的,截图没效果,可以看下面链接:
http://www.feekood.com/?path=:/zhanghao/%E5%BE%AE%E5%8D%9A/%E9%98%B6%E6%AE%B5%E6%80%A7%E8%84%9A%E6%9C%AC/FoeMoveBase.ais

需要安装一个插件:
运行的时候需要装一个插件:(研究了一下,其实就安装了一个“Microsoft Silverlight”以及打开“3D图像”的权限)


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-17 11:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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