编程为逼真的3D太空飞行的星场
时间:2013-01-29 11:18来源:卓想空间http://www.zxgzs.com 作者:QQ:610929375 点击: 次
有一件事我注意到的是缺乏很好的教程在网络上的第一人称游戏编程在Flash 5中,所以这里去。使用本课程中,任何人都应该有一个基本了解的Flash能够建立一个现实背景的第一人称的空间游戏。为了避免这是一个30页教程(已经是足够长的时间),我离开了大部分的游戏元素,如武器和敌人,以专注于飞行力学和星场。这将是你可以添加你自己的水平,敌人等,如果你喜欢它的感觉。
打开一个新的Flash影片和它命名为“航天”。在这个顺序,从顶部向底部:“行星”,“播放器”,“bigstars”,“星星”,创建下面的层。第一步是创建你所需要的项目符号。首先,创建一组十字线是玩家的焦点。如果你不喜欢设计自己的十字线,你可以使用一个在封闭的*。fla文件。后,你就大功告成了设计目标符号,该符号的实例放入你的“玩家”层,并将其命名实例“PLAYER1”。下一个符号,你需要的是明星,将弥补空间的游戏环境。我建议现在做两个星号“明星”,“bigstar”(一个较大的版本的“明星”)。他们没有任何更复杂的比白色圆圈。为了增加真实感和视觉上的吸引力,越来越多的尺寸和类型的恒星可以在以后添加,一旦所有的基础奠定。最后,创建一个的符号实例来作为附近的星球。把它放在你的“星球”层,并调用“planet1”。如果你不想要绘制的行星或恒星,你可以找到他们在封闭的*。fla文件。
认真做事
当你创建和命名的所有基本要素:两颗恒星,行星和目标图形,它的时间来装配项目所需的两星场。在您的“星星”层,创建一个新的符号实例称为“starfield1”。这将是为更小的尺寸分星空。进入编辑符号模式,并打开“库”项目符号列表。现在,多份的“明星”符号到“starfield1”你想要的。由于这些恒星比另一组设计(或没有,根据懒惰),可以有大约40或50有没有被过于杂乱。传播出来,但聚集了几个在一起,使它看起来更像一个真正的夜空。在您的“bigstars”层,你将要创建一个新的符号实例称为“bigstars1”,就像第一的星空,你要添加的“大明星”(单一的大明星)从库中的副本新的星空实例。应该有显着的大明星在这星空,有小星星中的第一个,也许数的十分之一左右。
编码
有一些重要的部分,这是一个相当现实的空间飞行模拟的ActionScript。为了不感到困惑,我们将每个对象脚本单独处理。有需要的ActionScript添加到他们的四个对象。这些是“PLAYER1”中,“planet1”中,“starfield1”,和“bigstars1。首先,让我们来处理PLAYER1,目标,将坐在中心的viewscreen。中心的目标,PLAYER1实例的操作“框中输入下面的代码:
onClipEvent事件(负载)
{
this._x = 250;
this._y = 200;
planetSpeed =(0.02的* _root.planet1._width);
starSpeed =(0.001的* _root.planet1._width);
bigstarSpeed =(0.003的* _root.planet1._width);
}
onClipEvent事件(enterFrame事件)
{
如果(Key.isDown(Key.RIGHT)的)
{
_root.planet1._x - = planetSpeed;
_root.starfield1._x - = starSpeed;
_root.bigstars1._x - = bigstarSpeed;
}
否则,如果(Key.isDown(Key.LEFT)的)
{
_root.planet1._x + = planetSpeed的;
_root.starfield1._x + = starSpeed的;
_root.bigstars1._x + = bigstarSpeed的;
}
如果(Key.isDown(Key.DOWN)的)
{
_root.planet1._y - = planetSpeed;
_root.starfield1._y - = starSpeed;
_root.bigstars1._y - = bigstarSpeed;
}
否则,如果(Key.isDown(Key.UP)的)
{
_root.planet1._y + = planetSpeed的;
_root.starfield1._y + = starSpeed的;
_root.bigstars1._y + = bigstarSpeed的;
}
}
大部分代码是相当简单,但它是值得一去了。首先,在顶部的脚本(负载)的部分,我们中心的对象的坐标250,200和介绍我们的三个的的速度变量:planetSpeed是在这个星球对象似乎相对移动的玩家。 starSpeed设定的速度有多快,规模较小的恒星看起来移动,并bigstarSpeed的设置,速度的大明星。正如你可以看到,所有这三个变量取决于最终的_width属性的planet1对象的。换句话说,这个星球对象增加(或接近),受到影响的其他对象的运动,就好像他们实际上是越来越近的播放器在空间环境下。 (负载)部分后(enterFrame事件),每分钟更新一次的对象采取任何行动。这部分由四个击键处理程序,一个用于每个箭头键。每个箭头键被按下时,所有的对象将根据先前设置的变量做出应有的反应。
(责任编辑:卓想空间http://www.zxgzs.com)
上一篇:如何使Flash和PHP谈话
下一篇:本教程是为了创造一个塑料按钮。