MC新手入门(四十三)------ 愤怒小狗制作四

添加游戏全局脚本

1. 点脚本,全局代码,在弹出的对话框中

7-5-1.png

图7-5-1

7-5-2.png

图7-5-2

在空白处写如下代码:
              void MoveHorizon();
              void UpClick(int a);
              void jumpChangeAnimation();
/*****************************************************************************
创建MoveHorizon方法用来判断小狗是否在50的水平线上。
当在水平线上方,让小狗的y轴速度加1的向下掉
当在水平线下面时,让小狗y轴速度为-1的向上移动。
当在水平线上,就小狗y轴速度为0.
当小狗在水平线上或下方,则让i_MouseDown变量为0。为0时可以点击area_DownClick区域
i_MouseDown:鼠标状态
*****************************************************************************/
              void MoveHorizon();
              void UpClick(int a);
              void MoveHorizon()
              {
                    if(player_dog.y <= 50)
                    {
                          player_dog.yvelocity += 1;
                     }
                     else
                    {
                          player_dog.yvelocity = 0;
                          if(player_dog.y > 50)
                         {
                               player_dog.yvelocity = -1;
                          }
                          else
                         { 
                               player_dog.yvelocity = 0;
                          }
                          i_MouseDown = 0;
                     }
              }
/*******************************************************************************
创建UpClick方法
调用时给小狗传入向上的速度a。
*******************************************************************************/
              void UpClick(int a)
              {
                     if(i_MouseDown < 2)
                    {
                          player_dog.yvelocity = a;
                          i_MouseDown += 1;
                    }
              }
/***********************************************************************
创建jumpChangeAnimation方法
在跳跃时在满足条件后改变动画
***********************************************************************/
              void jumpChangeAnimation()
              {
                     if(actPlayerDog.yvelocity == -2 && actPlayerDog.yscreen <150)
                     {
                             ChangeAnimation("actPlayerDog", "dogJumpTwo", FORWARD);
                     }
                     else if(actPlayerDog.yvelocity >=12 && actPlayerDog.yscreen >170 && i_CollisionChange == 0)
                    {
                              ChangeAnimation("actPlayerDog", "animDogRun", FORWARD);
                              DoubleXVelocity(-8.0, -1.0, 0.0);
                     }
               }
写好后保存脚本。弹出如下界面。输入脚本名“YVelocity”->确定

7-5-3.png

图7-5-3

以相同的方式新建脚本“XVelocity”,在代码编辑区域里输入代码:
               void DoubleXVelocity(double bg, double dog, double cat);
               void remoraXVelocity(double a);
               void DoubleXVelocity(double a, double b, double c);// 设置背景、小狗、猫在水平方向上的速率,使画面在X方向上动起来。
               {
                      actBgLevelOne.xvelocity = bg; // XVelocity:角色的像素/帧在水平方向上的速率
                      actBgLevelTwo.xvelocity = bg;
                      actBgLevelThree.xvelocity = bg;
                      actPlayerDog.xvelocity = dog;
                      actPlayerCat.xvelocity = cat;
                }
                void remoraXVelocity(double a) // 设置障碍物在水平方向上的速率,使画面在X方向上动起来。
                {
                       actPlayRemOneP.xvelocity = a;
                       actPlayRemOneP2.xvelocity = a;
                       tPlayRemOneP3.xvelocity = a;
                       actPlayRemTwo1.xvelocity = a;
                       actPropBoneP.xvelocity = a;
                       actPlayRemTwo.xvelocity = a;
                       actPlayRemThree.xvelocity = a;
                       actPlayRemTree1.xvelocity = a;
                       actPlayRemTree2.xvelocity = a;
                }


2. 为角色添加事件及行为。
右击“area_UpClick” 角色,在角色面板里面 点“添加事件”的下拉列表。

7-5-4.png

图7-5-4

点“添加事件”按钮。如下图设置

7-5-5.png

图7-5-5

点“确定”。在代码区域内写入如下代码:
                 UpClick(-16);
                 DoubleXVelocity(5.0, 5.0, 5.0);
以相同的方式添加area_UpClick角色的Mouse Button Up 事件的Script Editor行为。
如下图:

7-5-6.png

图7-5-6

在空白编辑区里面写入代码:

                  DoubleXVelocity(7.0, 6.0, 7.0);
然后,保存并退出就完成了“area_UpClick” 角色的行为编写。
接下来我们为“area_FrontClick”角色的鼠标键按下事件的脚本编辑器行为。添加如下代码:
                 DoubleXVelocity(7.0, 8.0, 7.0);
为“area_FrontClick” 角色的鼠标键弹起事件的脚本编辑器行为。添加如下代码:
                 DoubleXVelocity(7.0, 6.0, 7.0);
最后来添加“area_DownClick” 角色的鼠标键按下事件的改变动画行为。如下图:

7-5-7.png

图7-5-7

为“area_DownClick”角色添加。在Mouse Button Up 事件里添加Change Animation 行为。改变动画的名称为dog_squatTwo.如下图:

7-5-8.png

图7-5-8

 

在全局脚本里面创建第一个关卡中的角色:
创建一个命名为:CA_createActor在代码区域写入以下代码。

               void CALevelOne();
               void CARemoraOne();
               void CALevelTwo();
               void CARemoraTwo();
               void CALevelThree();
               void CARemoraThree();
/*******************************************************************************
创建一个方法用来创建第一个关卡中的角色
*******************************************************************************/
                void CALevelOne()
                {
                       CreateActor("actBgLevelOne", "animBgLevelOne", "", "", 1760, 0, true);
                       CreateActor("actPlayerDog", "animDogRun", "", "", -70, 50, true);
                       CreateActor("actPlayerCat", "animCatRun", "", "", 200, 50, true);
                       CreateActor("actStartTime", "animCountTime", "", "", 0, 0, true);
                }
                void CARemoraOne()
                {
                       CreateActor("actPlayRemOneP", "animRock", "", "", -300, 70, true); 
                        CreateActor("actPlayRemOne", "animRock", "actPlayRemOneP", "", 600, 0, true); 
                        CreateActor("actPlayRemOne", "animRock", "actPlayRemOneP", "", 1450, 0, true); 
                        CreateActor("actPlayRemOne", "animRock", "actPlayRemOneP", "", 1500, 0, true);
                        CreateActor("actPlayRemOne", "animRock", "actPlayRemOneP", "", 2000, 0, true); 
    
                        CreateActor("actPlayRemTwo1", "animBadDog", "", "", 700, 55, true);   
            
                        CreateActor("actPropBoneP", "animBone", "", "", -300, -20, true); 
                        CreateActor("actPropBone", "animBone", "actPropBoneP", "", 1000, -20, true);
                        CreateActor("actPropBone", "animBone", "actPropBoneP", "", 1700, -20, true);
                        CreateActor("actPropBone", "animBone", "actPropBoneP", "", 2000, -20, true);
                 }
/************************************************************
创建一个方法用来创建第二个关卡中的角色
************************************************************/
                  void CALevelTwo()
                   {
                         CreateActor("actBgLevelTwo", "animBgLevelTwo", "", "", 1760, 0, true);
                         CreateActor("actPlayerDog", "animDogRun", "", "", -70, 50, true);
                         CreateActor("actPlayerCat", "animCatRun", "", "", 200, 50, true);
                         CreateActor("actStartTime", "animCountTime", "", "", 0, 0, true);
               }
               void CARemoraTwo()
               {
                         CreateActor("actPlayRemOneP2", "animMow", "", "", -300, 60, true); 
                         CreateActor("actPlayRemOne2", "animMow", "actPlayRemOneP2", "", 600, 0, true); 
                         CreateActor("actPlayRemOne2", "animMow", "actPlayRemOneP2", "", 650, 0, true);
                         CreateActor("actPlayRemOne2", "animMow", "actPlayRemOneP2", "", 2000, 0, true);
                         CreateActor("actPlayRemOne2", "animMow", "actPlayRemOneP2", "", 2500, 0, true); 
                         CreateActor("actPlayRemOne2", "animMow", "actPlayRemOneP2", "", 2850, 0, true); 
                         CreateActor("actPlayRemOne2", "animMow", "actPlayRemOneP2", "", 3000, 0, true); 
                         CreateActor("actPlayRemOne2", "animMow", "actPlayRemOneP2", "", 3500, 0, true);
                         CreateActor("actPlayRemOne2", "animMow", "actPlayRemOneP2", "", 3550, 0, true)
                         CreateActor("actPropBoneP", "animBone", "", "", -300, -20, true); 
                         CreateActor("actPropBone", "animBone", "actPropBoneP", "", 1300, -20, true);
                         CreateActor("actPropBone", "animBone", "actPropBoneP", "", 1900, -20, true);
                         CreateActor("actPropBone", "animBone", "actPropBoneP", "", 2500, -20, true);


                         CreateActor("actPlayRemTree1", "animTreeHole", "", "", 700, 60, true);   
                         CreateActor("actPlayRemTree2", "animTreeTrunk", "", "", 778, -5, true);
               }
/***********************************************************
创建一个方法用来创建第三个关卡中的角色
************************************************************/
               void CALevelThree()
               {
                         CreateActor("actBgLevelThree", "animBgLevelThree", "", "", 1760, 0, true);
                         CreateActor("actPlayerDog", "animDogRun", "", "", -70, 50, true);
                         CreateActor("actPlayerCat", "animCatRun", "", "", 200, 50, true);
                         CreateActor("actStartTime", "animCountTime", "", "", 0, 0, true);
               }
               void CARemoraThree()
               {
                         CreateActor("actPlayRemOneP3", "animGarbagecan", "", "", -300, 70, true); 
                         CreateActor("actPlayRemOne3", "animGarbagecan", "actPlayRemOneP3", "", 600, 0, true); 
                         CreateActor("actPlayRemOne3", "animGarbagecan", "actPlayRemOneP3", "", 1450, 0, true); 
                         CreateActor("actPlayRemOne3", "animGarbagecan", "actPlayRemOneP3", "", 1500, 0, true);
                         CreateActor("actPlayRemOne3", "animGarbagecan", "actPlayRemOneP3", "", 2000, 0, true);     
                         CreateActor("actPropBoneP", "animBone", "", "", -300, -20, true); 
                         CreateActor("actPropBone", "animBone", "actPropBoneP", "", 1000, -20, true);
                         CreateActor("actPropBone", "animBone", "actPropBoneP", "", 1700, -20, true);
                         CreateActor("actPropBone", "animBone", "actPropBoneP", "", 2000, -20, true); 
                         CreateActor("actPlayRemThree", "animHydrant", "", "", 2200, 20, true); 
                         CreateActor("actPlayRemTwo", "animDustbin", "", "", 700, 55, true); 
               }
在全局代码中创建命名为:DA_destroyactor.在代码区域写入以下代码。删除创建的角色。
               void DestroyLevelOne();
               void DestroyLevelTwo();
               void DestroyLevelThree();


               void DestroyLevelOne()
               {
                         DestroyActor("actBgLevelOne");
                         DestroyActor("actPlayerDog");
                         DestroyActor("actPlayerCat");    
                         DestroyActor("actHintBone");    
                         DestroyActor("actPlayRemOneP");
                         DestroyActor("actPlayRemOne");
                         DestroyActor("actPlayRemTwo1");
                         DestroyActor("actPropBoneP");
                         DestroyActor("actPropBone");
               }


               void DestroyLevelTwo()
               {
                         DestroyActor("actBgLevelTwo");
                         DestroyActor("actPlayerDog");
                         DestroyActor("actPlayerCat");    
                         DestroyActor("actHintBone");  
                         DestroyActor("actPlayRemOneP2");  
                         DestroyActor("actPlayRemOne2");   
                         DestroyActor("actPropBoneP");
                         DestroyActor("actPropBone");
                         DestroyActor("actPlayRemTree1");
                         DestroyActor("actPlayRemTree2");
               }


               void DestroyLevelThree()
               {
                         DestroyActor("actBgLevelThree");
                         DestroyActor("actPlayerDog");
                         DestroyActor("actPlayerCat");    
                         DestroyActor("actHintBone");
                         DestroyActor("actPlayRemOneP3");
                         DestroyActor("actPlayRemOne3");
                         DestroyActor("actPlayRemThree");
                         DestroyActor("actPropBoneP");
                         DestroyActor("actPropBone");
               }


调用第一关卡:
在AP_LevelNumber角色中,添加“Create Actor”,“Mouse Button Down”,“MouseButton Up”三个事件,
1.“Create Actor”的Script Editor行为中,添加代码使动画帧不会自动播放
代码如下:
               ChangeAnimationDirection("Event Actor", STOPPED); //动画停止
               animpos = 0; //在第0帧
2.“Mouse Button Down”的Script Editor行为中,添加代码使动画帧在鼠标按下时换成第1帧。
代码如下:
               animpos = 1; //在第1帧
3.“MouseButton Up”的Script Editor行为中,添加代码调用第一关的函数。
代码如下:
               animpos = 0; //转为第0帧
               DestroyLevelFrame();//删除本面的角色
               CALevelOne();//调用第一关的代码
在这里就将第一关卡,完成了。现在可以测试一下。
添加背景图片:
点角色控件里的角色为工程添加一个“actBgLevelOne”角色,在属性列表里,改变属性名称。在动画设置里面添加“animBgLevelOne”图片作为背景图片。
1) 添加“Create Actor”事件,在“Script Editor”中添加如下代码:
               i_level = 1;
               CreateActor("actHintBone", "animHintBone", "", "", 0, -140, true);
2) 添加“Draw Actor”事件,在“Script Editor”中添加如下代码:
               if(actPlayerCat.x - actPlayerDog.x <= 100 && catExist == 0 && i_MouseFront ==0)
               {
                          DoubleXVelocity(-9.0, 0.0, 0.0);
               }
               if(actBgLevelOne.xscreen <= -2000)
               {
                          CreatepassFrame();
                          DestroyLevelOne();
               }


第二关关卡:
添加背景图片:
点角色控件里的角色为工程添加一个“bg_levelTwo”角色,在属性列表里,改变属性名称。在动画设置里面添加“AD_bg_levelTwo”图片作为背景图片。
1)添加“Create Actor”事件,在“Script Editor”中添加如下代码:
               i_level = 2;
               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_levelTwo.xscreen <= -2000)
               {
                          CreatepassFrame();
                          DestroyLevelTwo();
               }
调用第二关卡:
在AP_LevelNumber2角色中,添加“Create Actor”,“Mouse Button Down”,“MouseButton Up”三个事件,
1)“Create Actor”的Script Editor行为中,添加代码使动画帧不会自动播放代码如下:
               ChangeAnimationDirection("Event Actor", STOPPED); //动画停止
               animpos = 0; //在第0帧
2)“Mouse Button Down”的Script Editor行为中,添加代码使动画帧在鼠标按下时换成第1帧,代码如下:
               animpos = 1; //在第1帧
3)“MouseButton Up”的Script Editor行为中,添加代码调用第一关的函数,代码如下:
               animpos = 0; //转为第0帧
               DestroyLevelFrame();//删除本面的角色
               CALevelTwo();//调用第一关的代码
在这里就将第二关卡,完成了。现在可以测试一下。


第三关关卡:
添加背景图片:
点角色控件里的角色为工程添加一个“bg_levelThree”角色,在属性列表里,改变属性名称。在动画设置里面添加“AD_bg_levelThree”图片作为背景图片。
(1)添加“Create Actor”事件,在“Script Editor”中添加如下代码:
               i_level = 3;
               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_levelThree.xscreen <= -2000)
               {
                          CreatepassFrame();
                          DestroyLevelThree();
               }
调用第三关卡:
在AP_LevelNumber3角色中,添加“Create Actor”,“Mouse Button Down”,“MouseButton Up”三个事件,
(1)“Create Actor”的Script Editor行为中,添加代码使动画帧不会自动播放,代码如下:
               ChangeAnimationDirection("Event Actor", STOPPED); //动画停止
               animpos = 0; //在第0帧
(2)“Mouse Button Down”的Script Editor行为中,添加代码使动画帧在鼠标按下时换成第1帧。代码如下:
               animpos = 1; //在第1帧
(3)“MouseButton Up”的Script Editor行为中,添加代码调用第一关的函数,代码如下:
               animpos = 0; //转为第0帧
               DestroyLevelFrame();//删除本面的角色
               CALevelThree();//调用第一关的代码
在这里就将第二关卡,完成了。现在可以测试一下。

Demo下载地址:http://www.dongyo.cn/bbs/forum.php?mod=viewthread&tid=2518&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline

 

posted @ 2013-05-16 14:46  zj_king  阅读(235)  评论(0编辑  收藏  举报