灵动游戏论坛游戏专区【游戏教程】动作游戏中多块地板和跳跃的实现

1  /  4  页   1234 跳转 查看:4121

标题: 动作游戏中多块地板和跳跃的实现

动作游戏中多块地板和跳跃的实现

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

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

首先画一个矩形,按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=300,300]http://www.mhhf.net/teach/jump/jump.swf[/FLASH]

原文件下载点这里
引用
 

Re:动作游戏中多块地板和跳跃的实现

引用
 

Re:动作游戏中多块地板和跳跃的实现

引用
 

Re:动作游戏中多块地板和跳跃的实现

引用
 

Re:动作游戏中多块地板和跳跃的实现

引用
 

Re:动作游戏中多块地板和跳跃的实现

引用
 

Re:动作游戏中多块地板和跳跃的实现

在灵翼的基础上乱搞了一通~~~~~~~~~呵呵~~~~~

[FLASH=500,300]http://www.cantonese.org.cn/ungoo/bbs/upload/fyzw_2005217163321.swf[/FLASH]
引用
 

Re:动作游戏中多块地板和跳跃的实现

希望灵翼能多发些教程~~~~~强烈要求啊~~~~~~~呵呵~~~~~~~~[em04][em04]
引用
 

Re:动作游戏中多块地板和跳跃的实现

引用
 

Re:动作游戏中多块地板和跳跃的实现

F9打开的不是动作面板吗?Ctrl+F3才是属性面板啦[em09]
引用
 

Re:动作游戏中多块地板和跳跃的实现

要跳的那个小人。如果用正方形的话。它是不是也是一个判定。只需从库中拉一个判定出来。然后把它和其它判定区分一下颜色。然后缩小。就变成了要跳的那个小人了。是吧?[em09]
引用
 

Re:动作游戏中多块地板和跳跃的实现

引用
 

Re:动作游戏中多块地板和跳跃的实现

引用
 

Re:动作游戏中多块地板和跳跃的实现

引用
 

Re:动作游戏中多块地板和跳跃的实现

引用
 
1  /  4  页   1234 跳转

版权所有 灵动原创FLASH游戏中心   Sitemap

Powered by Discuz!NT 2.0.1214    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.03125 second(s) , 4 queries. 苏ICP备05047165号
返顶部