添加游戏功能
通过上边的学习,我们已经学会了添加事件,教程到这,已经很长了,我们会发现教程看起来很啰嗦,太细,做起来一下子就完了,所以接下来我们稍微简化下。记住添加条件或动作的步骤如下:
1、双击添加新事件,点击Add action链接添加一个动作。
2、在对话框中双击要添加条件/动作的对象
3、选取要添加的条件/动作
4、如果有需要的话,输入参数
接下来教程中以下面的格式来表述:
Add condition System -> Every tick
Add action Player -> Set angle towards position -> X: Mouse.X,Y: Mouse.Y
让角色可以射击
当玩家点击的时候,可以发射子弹。这可以通过Spawn an object动作来实现,该动作在同样的位置和角度(相对于角色)创建新的对象实例。子弹的Bullet movement属性将会使它向前飞出。制作如下事件:
条件:Mouse->On click->Left clicked(the default) //鼠标->点击->左击(默认)
动作:Player->Spawn another object->For Object,choose the Bullet //Play对象->产生另外的对象->对象,选择子弹层,输入1(“Main”图层),Image point(子弹的发射起点)保持默认为0。如下:
如果你运行游戏,你将看到子弹从角色图片的中心发出,并不是从枪口发出。我们来修改下,在工程或对象面板中右击player对象选择Edit animations编辑动画。
在弹出的图片编辑器中,选择Set origin and image points工具
看到image points对话框,对象的原点以红点显示
这是对象的原点(如果你旋转对象,将绕着这个点),点击绿色的+号按钮添加一个点,该点以蓝点显示。我们在角色图片枪口位置处左击,将该点放置于枪口位置:
关闭图片编辑器,双击事件表中早前添加的Spawn an object动作,更改Image point为1.在面板中可以看到序号的,默认的原点为0,其他添加的一次1,2。。。等。如下:
运行游戏。此时子弹已经修改为从枪口发射。此时,子弹没有做其他任何事。接下来我们来添加碰撞事件,用来消灭敌人。
添加事件如下:
条件:Bullet->On collision with another object->pick Monster。 //子弹->于其他对象碰撞->选择Monster怪物。
动作:Monster->Destroy //怪物->消灭
动作:Bullet->Spawn another object->Explosion,layer 1 //在图层1 碰撞的位置产生新对象-爆炸特效
动作:Bullet->Destroy //子弹销毁
爆炸特效
运行游戏,尝试射击一个怪物,我们可以看到碰撞发生,爆炸特效也产生了,杯具的是,有个大大的黑色边框,好难看!
不用担心,我们可以去掉黑框,在工程面板或者对象面板点击Explosion object爆炸特效对象。在它的属性面板里设置Effect属性为Additive(叠加,玩过PS的知道,黑色颜色值为0,叠加后就不起作用,就看不到了,具体的去百度下吧)。再次尝试游戏可以看到,完美了
让怪物聪明一点
(添加怪物智能AI,专业说法,囧,本例可没那么高深)
当下怪物只会向右移动。我们来让他们更有趣些。首先让他们产生在随机的位置。
条件:System->On start of Layout //系统->画布启动时
动作:Monster->Set angle->random(360) //怪物->设置角度->0-360随机度数
Condition: System -> On start of Layout
Action: Monster -> Set angle -> random(360)
此时,怪物依然移出画布,再也看不到,接着我们再来修改,让怪物移动边缘处的时候,自动往回移动,并且添加智能,让怪物朝着玩家角色移动(自然是角色没挂的时候)。
条件:Monster->Is outside layout //判断怪物是否要离开画布
动作:Monster->Set angle toward position->For X,Player.X - for Y,Player.Y //设置怪物朝向角色的坐标
再次运行游戏。此时你可以看到怪物在画布里朝着不同的方向移来移去,最终都会朝着角色围过来。这个智能的行为咱们不编程看不到代码(就算编程也太难,囧,要不也不找这软件了哈),将就着看吧,似乎不错了!
此我们的角色还是无敌的,怪物却是太脆落了,子弹一碰就挂了,接着我们通过instance variables实例变量来修改这些。