您的位置:首页 > 其它

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

2013-05-16 14:46 106 查看
添加游戏全局脚本

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



图7-5-1



图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

以相同的方式新建脚本“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

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



图7-5-5

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



图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

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



图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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: