点击这里给我发消息 点击这里给我发消息
首页 > 行业资讯 > flash>详细内容

横版ACT多层地板地图制作

添加时间:2010-1-5
    相关阅读: flash 制作
act中多块地板和跳跃的实现
我们要实现的是 一个能够很方便的制作地图 的复杂地图,而且让主角能够自动的在地图上移动和跳跃。而且能够通过按键时间控制跳跃高度。
如何开始呢?
首先画一个矩形,按F8转换成MC(MovieClip电影剪辑)元件名叫判定。专门制作“判定”主要是为了处理方便,而且把画面和游戏内核分开。
从库(F11)中拖放很多个判定MC到场景上,形成你要的场景,用自由变换工具(Q)把所有地板MC编辑成合适的大小。好了,我们的场景上高低起伏的地形做好了。选中所有的判定,F8变成一个新的MC,元件名随便比如叫第一关,F9打开属性页,左边有一个<InstanceName>或者<实例名>,取名叫做背景。
这样 _root.背景 这个mc里面就有大量的判定MC,我们的地图判定就做好了。
把他们都放在在 _root.背景 的好处是:
1 可以用循环
for( var i in _root.背景 ){
_root.背景[i]...........
}

这样访问所有地板(注意最好是正方形的MC,其他形状以后有时间再讨论),而不需要知道有多少块地板、它们在什么位置。

2 如果需要背景移动,正如我以前说过的,只需要移动 _root.背景 这个MC,所有地板都会一起移动。
好了,画一个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.背景[i])){
landObject = _root.背景[i];
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;
}

restart按钮的代码很简单,在这里我省了。
<源文件01: 最基本的重力、跳跃控制的完整as>
点击浏览该文件
点击开新窗口欣赏该FLASH动画![全屏欣赏]
点击浏览该文件
空格跳跃, 掉下去找不到人了就按restart
能够根据空格按下的时间控制跳跃高度 本文作者:
咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册