MC新手入门(四十二)------ 愤怒小狗制作三
创建游戏角色
我们打开mobileCreate软件,点【游戏设置】设置游戏的视图大小,如图:
图7-4-1
图7-4-2
我们先创建一个游戏角色,点状态栏中的【创建角色】图标,创建角色,并在【角色管理】的基本属性内输入名字: “actPlayerDog”,类型:“Normal”
在【角色管理】里面,点击【角色控件】里面的【角色】按钮添加角色,在【角色面板】中可以看到如【图7-4-3】:
图7-4-3
注意:
有一些角色只有在需要时被创建使用,而不需要刚开始就被创建,否则会出现一些不必要的尴尬事件。譬如在愤怒的小狗中开始画面跑出一只小狗,这样就很唐突。然后击点“添加动画”在弹出框里点“打开文件”选择图片“animDogRun.png”“animDogSquat”,””dogSquOne”,” dogSquatTwo”,“animDogJump”, “dogJumpOne” ,“dogJumpTwo” ,“animDogSpin”。这样在界面就添加了一个完整的角色了。将小狗的帧数如【图7-4-4】设置:
图7-4-4
也许你会不明白为何要这样设置,由于动画是8个横向帧组成的一组动画,所以将其设置为8帧,纵向帧是1帧。帧速率是指动画播放的速度。如果想动画播放得快一些值就设置大一点。反之是慢速度。
图7-4-5
以下四张图都是动画序列,是编辑动画产生的。
“dogSquatOne”(图7-4-6),“dogSquatTwo”(图7-4-7)都是由“animDogJump”的动画编辑而来。
图7-4-6
图7-4-7
“dogJumpOne”(图7-4-8) ,“dogJumpTwo”(图7-4-9)都是由“animDogSquat”的动画编辑而来。
图7-4-8
图7-4-9
为“actPlayerDog”增加“角色绘制”,“动画结束”,“物体碰撞”事件。
1.“角色绘制”的脚本编辑器行为中,添加代码如下:
MoveHorizon();
jumpChangeAnimation();
2.“动画结束”的三个“改变动画”行为中改变动画
第一个设置是动画(dogJumpOne)完成事件改变完成执行动作(改变动画)设置执行角色的角色:actPlayerDog,动画名称:dogSquatOne,播放动画的方式:停止如下图:
图7-4-10
第二个设置是动画(dogJumpTwo)完成事件改变完成执行动作(Change Animation)设置执行角色的角色:actPlayerDog,动画名称:animDogRun,播放动画的方式:向前.
如下图:
图7-4-11
第三个设置是动画(dogJumpTwo)完成事件改变完成执行动作(Change Animation)设置执行角色的角色:actPlayerDog,动画名称:dogJumpTwo,播放动画的方式:停止 如下图:
图7-4-12
3.“物体碰撞”的脚本编辑器行为中,添加代码调用第一关的函数。
代码如下:
PhysicalResponse(MOVE_EVENT_ACTOR_ONLY, USE_CALCULATED_MASS, 1.0, 1.0, 0.0, 0.0);
if(i_CollisionChangeTwo == 0)
{
ChangeAnimation("player_dog", "AD_animation_dog_run1", FORWARD);
i_CollisionChangeTwo +=1;
}
DoubleXVelocity(-7.0, -1.0, 0.0);
i_MouseDown = 0;
猫:
经过以上详细的讲解,以相同的方法,来添加猫的角色我想不是问题。
1.创建“actPlayerCat”角色,增加动画“animCatRun”,“animCatBack”两张动画。
2.添加“Collision Finish”事件,的“Destroy Actor”行为。销毁角色 “Event Actor”
图7-4-13
添加背景图片:
点角色控件里的角色为工程添加一个角色,在属性列表里,改变属性名称。在动画设置里面添加“actBgLevelOne”图片作为背景图片。
1.添加“创建角色”事件,在“脚本编辑器”中添加如下代码:
i_level = 1;
CreateActor("hint_bone", "hintbone", "", "", 0, -140, true);
2.添加“角色绘制”事件,在“脚本编辑器”中添加如下代码:
i_level = 1;
CreateActor("hint_bone", "hintbone", "", "", 0, -140, true);
2.添加“Draw Actor”事件,在“Script Editor”中添加如下代码:
if(player_cat.x - player_dog.x <= 100 && catExist == 0 && i_MouseFront ==0)
{
DoubleXVelocity(-9.0, 0.0, 0.0);
}
if(bg_levelOne.xscreen <= -2000)
{
EventDisable("area_UpClick", EVENTALL);
EventDisable("area_FrontClick", EVENTALL);
EventDisable("area_DownClick", EVENTALL);
DestroyLevelOne();
CreatepassFrame();
}
添加障碍物:
1. 创建“actPlayRemOneP”角色,添加“animRock”图片
创建“actPlayRemOne” 角色,添加“animRock” 图片,添加碰撞事件“脚本编辑器” 添加事件。
图7-4-14
在“脚本编辑器”编辑区内写入:
DestroyActor("Event Actor");
ChangeAnimation("player_dog", "AD_animation_dog_zhuang", FORWARD);
i_CollisionChange = 1;
//让角色的事件无效
EventDisable("area_UpClick", EVENTALL);
EventDisable("area_FrontClick", EVENTALL);
EventDisable("area_DownClick", EVENTALL);
//给角色x轴上面设置速度
DoubleXVelocity(-8.0, -2.0, 0.0);
创建“actPlayerRemOneP2”角色,添加“animMow”图片
创建“actPlayerRemOneP2”角色,添加“animMow”图片,继承“actPlayerRemOne” 角色。
图7-4-15
创建“actPlayRemTwo1”角色,添加“animBadDog”图片,添加Collision事件的(如下图)事件,
图7-4-16
创建“actPropBoneP”角色,添加“animBone”图片
创建“actPropBone”角色,添加“animBone”图片,添加“Collision”( actPlayerDog的任意边界)事件,的“ScriptEditor”添加代码:DestroyActor(“Event Actor”);
创建“actPlayRemOneP3”角色,添加“animGarbagecan”图片,
创建“actPlayRemOne3”角色,添加“animGarbagecan”图片,继承“actPlayRemOneP3” 角色。
图7-4-17
图7-4-18
创建“actPlayRemTree1”角色,添加“animTreeHole”图片
创建“actPlayRemTree2”角色,添加“animTreeTrunk”图片
为actPlayRemTree2添加碰撞时的脚本
图7-4-19
脚本内容如下:
if(i_MouseUp == 0)
{
DoubleXVelocity(0.0, 0.0, 5.0);
DestroyActor("area_FrontClick");
DestroyActor("area_UpClick");
DestroyActor("area_DownClick");
DestroyActor("area_GameOver");
if(i_hasHintFail == 0)
{
CreateActor("actHintFail", "animFail", "", "", view.x + view.width / 2, view.y + view.height / 2, true);
}
}
创建“actHintFail”角色,添加“animFail”图片
1. 添加“创建角色”事件,“脚本编辑器”
图7-4-20
内容为:
actPlayerDog.yvelocity = 0;
ChangeAnimation("actPlayerDog", "animDogSpin", FORWARD);
DestroyActor("player_remoraOneP");
remoraXVelocity(0);
i_hasHintFail = 1;
2. 添加“CreateActor” 对像的“Event Disable” 行为,禁止事件的角色名称:player_dog,事件名称:All Events.
如下图:
图7-4-21
3. 在“hint_fail”角色中添加“角色绘制”事件的“脚本编辑”行为。代码如下:
if(actPlayerDog.x < actHintFail.x - 150)
{
actPlayerDog.x += 6;
}
4. 添加“鼠标按下事件”事件。“脚本编辑”添加如下代码:
ExitGame();//退出游戏.
创建“prop_DrumstickP”角色,添加“drumstick”图片
创建“prop_Drumstick”角色,添加“drumstick”图片,再在“碰撞”事件中,添加行为“销毁角色”,碰撞角色actPlayerDog,碰撞条件:任何边沿,如图【7-4-23】
图7-4-22
创建“actPlayRemThree”角色,添加“animHydrant”图片,
添加“计时器”(如图【7-4-24】)。
图7-4-23
点确定后添加禁止事件的角色名和事件名称。
图7-4-24
添加“动画结束”事件的“改编动画”行为,
图7-4-25
改变“animHydrant”动画的播放动画的方式为“Stopped”。
图7-4-26
碰撞完成事件,启用player_dog角色的DrawActor行为。
图7-4-27
如下图:
图7-4-28
图7-4-29
添加“actStartTime”角色
1. 添加图片“animCountTime”,为角色添加“动画结束”事件,“销毁角色” 如下图
图7-4-30
2. 添加“创建角色”事件的“Script Editor” 行为,在代码编辑区域里写入:
EventDisable("area_UpClick", EVENTALL);
EventDisable("area_FrontClick", EVENTALL);
EventDisable("area_DownClick", EVENTALL);
3. 添加“销毁角色”事件的“Script Editor”行为,在代码编辑区域里写入:
DoubleXVelocity(-8.0, -1.0, 0.0);
EventEnable("area_UpClick", EVENTALL);
EventEnable("area_FrontClick", EVENTALL);
EventEnable("area_DownClick", EVENTALL);
if(i_level == 1)
{
CARemoraOne();
}
4. 如图:现在我们了解一下如何实现两位主角的动作。
小狗(阿扁)的动作:
图7-4-31
1) 当玩家单击按住阿扁角色前方的水平区域,阿扁会加速奔跑,并与猫咪的距离逐渐缩短,当玩家松开之后,阿扁会用普通速度奔跑,与猫咪的距离越来越远。2) 在点击阿扁水平区域以上的空间,阿扁会跳跃,连续点击,阿扁会完成连续跳跃。3) 在点击阿扁水平区域以下的空间,阿扁会下蹲移动,同时速度变慢。
添加角色,特别注意类型一定是 “area_UpClick”, “area_FrontClick”, ”area_DownClick”分别是中跳,加速,下趴的触发区域。
大灰猫的动作:
1) 当狗处于红色区域后,猫会回头嘲笑以示警告。
2) 狗处于绿色区域是,猫咪处于奔跑状态。
3) 当狗处于绿色区域右侧的边缘时,猫咪会加速,与玩家始终保持一段距离。
4) 当狗碰撞到最左侧边界后,玩家失败,播放狗死亡动画,停止已有动画,唯独猫从右侧移动出画面。
创建两个出发区域:
分别命名为area_OverHint和area_GameOver
为area_OverHint 添加物体碰撞时的事件——改变动画
并做如下设置
图7-4-32
为area_GameOver 添加动画结束时的事件——改变动画
并做如下设置
图7-4-33
为area_GameOver 添加物体碰撞时的事件——脚本编辑器
图7-4-34
输入如下代码:
DoubleXVelocity(0.0, 0.0, 5.0);
DestroyActor("area_FrontClick");
DestroyActor("area_UpClick");
DestroyActor("area_DownClick");
DestroyActor("area_GameOver");
EventDisable("actPlayerDog", EVENTCOLLISION);
CreateActor("actHintFail", "animFail", "", "", view.x + view.width / 2, view.y + view.height / 2, true);