• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>AS游戏篇>文章内容
  • 中动作游戏中多块地板和跳跃的实现

  • 来源:闪无忧 作者: 2007-06-06 【

很多人讨论马里奥阿..........这里贴一个我以前写的冬冬

我们要实现的是 一个能够很方便的制作地图 的复杂地图,而且让主角能够自动的在地图上移动和跳跃。而且能够通过按键时间控制跳跃高度。
如何开始呢?

首先画一个矩形,按F8转换成MC(MovieClip电影剪辑)元件名叫判定。专门制作“判定”主要是为了处理方便,而且把画面和游戏内核分开。
从库(F11)中拖放很多个判定MC到场景上,形成你要的场景,用自由变换工具(Q)把所有地板MC编辑成合适的大小。好了,我们的场景上高低起伏的地形做好了。选中所有的判定,F8变成一个新的MC,元件名随便比如叫第一关,F9打开属性页,左边有一个<InstanceName>或者<实例名>,取名叫做背景。
这样 _root.背景 这个mc里面就有大量的判定MC,我们的地图判定就做好了。
把他们都放在在 _root.背景 的好处是:

1 可以用循环
for( var i in _root.背景 ){
_root.背景...........
}
这样访问所有地板(注意最好是正方形的MC,其他形状以后有时间再讨论),而不需要知道有多少块地板、它们在什么位置。

2 如果需要背景移动,正如我以前说过的,只需要移动 _root.背景 这个MC,所有地板都会一起移动。



onClipEvent(load){
 var xStart = _x;
//初始的_x和_y,按了Restart之后主角的坐标恢复到这个数字
 var yStart = _y;
 var yinc = 0;  
//垂直速度
 var g = 1;  
//垂直(重力)加速度
 var inAir = true;
//是否空中
 var moveSpeed = 8;
//主角的移动速度
 var jumpSpeed = -15;
//跳跃垂直初速度
 var landObject = null;
//当前脚下的物体
 var spacePressed = false;
//空格键是否按下
}

onClipEvent(enterFrame){
 
//抛物线和自由落体,如果目前在空中的话
 if(inAir){
  yinc += g;  
//yinc, y轴速度变大,g是重力加速度
   _y += yinc;  
//物体坐标+= yinc,物体根据当前速度下落
 
//如果在下落中(yinc>0),监测是否落到地面
  if(yinc >0){
   for(var i in _root.背景){
    if (hitTest(_root.背景)){
     landObject = _root.背景;
     var newy = landObject.getBounds(_root).yMin;
//得到地板的上表面
     if (_y - yinc < newy){
//如果该块地板在自己脚下,那么就落地了
      _y = newy;
      inAir = false;
      break;
     }else landObject = null;
    }
   }
  }
 }else{
//如果主角不在空中,让主角下落一个像素,测试是否和脚下的物体碰撞。如果不和脚下物体碰撞,证明脚下空了
  if(! hitTest(landObject) ){
//发现下面空了
   yinc = 1;
   inAir = true;
  }
 }
 
//按空格跳跃
 if(Key.isDown(Key.SPACE) && !spacePressed){
  spacePressed = true;
  if(!inAir){
   yinc = jumpSpeed;
   inAir = true;
  }
 }else if(!Key.isDown(Key.SPACE) && spacePressed){
//空格键松开就落下来,注意这里的处理方法
  spacePressed = false;
  if (yinc < -5) {
   yinc += 8;
   if (yinc >0) yinc = 0;
  }
 }
 
//方向控制左右移动,和垂直加速运动合到一起就是自然的抛物线
 if (Key.isDown( Key.LEFT )) _x -= moveSpeed;
 if (Key.isDown( Key.RIGHT )) _x += moveSpeed;
}


 




上一篇:flash游戏BOSS制作教程+详细代码解释+源代码   下一篇:flash游戏中控制角色惯性移动
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)