从今天开始会给大家讲解FLASH游戏编程的问题(高手不要笑我),因为本人能力有限,所以也只能是抛砖引玉啦。
言归正传。
因为游戏环境并不象FLASH动画一样可以预先作好关键帧,所以在处理“运动”这一问题时就要创造自己的运动规律,让场景内的物体按“规律”去自己运动。我们最熟悉,每天都会接触到的就是重力场了。对于FLASH编程中所涉及到的重力及重力加速度并不用按实际数值引用,你只要记得那是一个常量就行了。其实重力场是一个非常单纯的力场,他只涉及到一个垂直的力。重力加速度就是物体沿垂直方向运动的速度的增量。有了这些基本概念,就可以摸似出似真的重力场了。
来看看AS方面——
首先在场景中制作一个圆形,将它转化为MC,实例名取为“ball”,在第一帧上加入:
ymov = 0;
gravity = 2;
_root.onEnterFrame = function() {
ymov += gravity;
ball._y += ymov;
if (ball._y>400) {
ball._y = 400;
ymov *= -0.9;
}
};
这里设定初速度为0,重力加速度为2,当球运动到400的位置时开始反弹。在理想状态下应该是获得一个相反的速度,即最后一句应该是ymov *= -1。但考虑到我们平时所见到的情况并不是球在毫无能量损失的状态下运动的。我们把它的速度减少了10%,以摸拟在反弹时的能量损失。
有了重力场,我们就可以来看看一个本来水平运动的球会怎样受到重力的影响。在球上加入AS——
onClipEvent (enterFrame) {
speed = 4;
this._x += speed;
if (this._x>400) {
this._x = 0;
}
}
球会沿X轴以速度4向右移动,这里的判断语句if
(this._x>400) {this._x = 0;}
是说当球运动到水平400个单位时将出现在X=0的坐标上。这也是我们在玩游戏时经常遇到的情况:你的飞机从画面上方飞出,又从画面下方出现。
当球的水平运动与重力场同时作用到球上时,我们便可以看到相当逼真的运动效果了。
本文作者: