在很多游戏场景角色中,通常有控制角色颜色的现象,比如我们经常能看到这样一种情况,在坦克大战、魂斗罗还有超级玛丽等游戏中,当战斗者被打死时候,战斗者会变色,也就是提示玩家Game Over。
控制角色颜色函数
在MC中通过adjustHsv()函数来控制角色颜色。这个函数原理是使用HSV颜色模型,HSV色彩属性模式是根据色彩的三个基本属性:色相、饱和度和明度来确定颜色的一种方法。
函数原型如下:
void adjustHsv(const char *actorName,const char *aniName, double h, double s, double v);
说明:
actorName:角色名
aniName:动画名
h:色相是色彩的基本属性,就是平常所说的颜色名 称,如红色、黄色等。
s:饱和度是指色彩的纯度,越高色彩越纯,低则逐渐变灰。
v:明度也叫““亮度”。
实例运用
使用场景:在游戏中,我们经常能看到这样一种情况,在超级玛丽等游戏中,当超级玛丽被打死时候,超级玛丽会变色,也就是提示玩家Game Over。
目标:超级玛丽在移动过程中碰到乌龟时变色,接着超级玛丽消除。
实例:超级玛丽碰到乌龟时变色。
图3-4-8-2-1
走过去碰撞如下所示:
图3-4-8-2-2
首先我们将目标转换成逻辑描述:
游戏运行时,做下面的事情:
创建界面角色;
添加超级玛丽行走功能;
实现碰撞变色功能;
直到结束。
接着我们开始用MC来实现上述的逻辑:
1. 界面设计
通过前面学习,界面设计在这里就不多说了,其中玛丽角色名为actMario,乌龟角色名为actEnemy,结果如下所示:
图3-4-8-2-3
2. 添加超级玛丽行走功能
通过右方向键来控制向右行走,实现当一直按着右方向键时,玛丽一直往右行走,当弹起时,停止不动。如下步骤:
在actMario角色中添加“键盘按键按下”事件,按键右方向键,执行“改变动画”,选择animMarioMoveRight动画,如所示:
图3-4-8-2-4
在actMario角色中添加“键盘按键按下”事件,按键right,执行脚本编辑,如下所示:
图3-4-8-2-5
在actMario角色中选择动画animMarioMoveRight,添加Key Up事件,按键right,执行改变动作,选择animMarioStopRight动画,
图3-4-8-2-6
通过左方向键来控制向左行走,实现当一直按着左方向键时,玛丽一直往左行走,当弹起时,停止不动。如下步骤:
在actMario角色中选择停止站住状态动画marioStopleft,添加“键盘按键按下”事件,按键left(键盘上的“左方向键”),执行改变动作,选择marioMoveLeft动画,如所示:
图3-4-8-2-7
在actMario角色中选择停止站住状态动画marioStopleft,添加“键盘按键按下”事件,按键left,执行脚本编辑,如下所示:
图3-4-8-2-8
在actMario角色中添加“按键弹起”事件,按键left,执行改变动作,选择marioStopleft动画,如下所示:
图3-4-8-2-9
3. 实现碰撞变色功能
角色actMario跟乌龟碰撞有可能是停止碰撞或者移动碰撞,实现步骤如下:
在actMario角色中添加“物体碰撞”事件,执行添加编写脚本,如所示:
图3-4-8-2-10
脚本代码如下:
adjustHsv("actMario","animMarioStopRight", 0.5, 0.8, 0.3); //色调改变
添加一个计时器:
图3-4-8-2-11
再添加“物体碰撞”事件,执行“创建计时器”行为,
图3-4-8-2-12
接下来添加“使用计时器”事件。执行“删除角色”,如下所示:
图3-4-8-2-13
Demo下载地址:http://www.dongyo.cn/bbs/forum.php?mod=viewthread&tid=2441&extra=page%3D3%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline