Construct 2 从零学起 / 基础第2课:更多动作、实例变量
上节课的主角只会走路……于是今天给它跑步的动作吧.w.
选择打开,打开上次的工程
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/1.png
在这上面找到“Event sheet 1”
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/2.png
那是编辑场景中的事件的地方。
出现提示:
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/3.png
意思是双击添加事件=-=
我们的计划是按住Shift的时候让主角速度加快,但默认的情况下是没有关于键盘的事件的。
因此在右边的Project栏中右击Objects,选择Insert new object:
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/4.png
然后选择Keyboard(键盘):
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/5.png
由于Keyboard是个组件,不会在游戏过程中显示而是提供各种事件指令,因此弹出一条提示:
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/6.png
意思是现在能用键盘了{:nm07:}
现在双击事件页,看到Keyboard出现了{:nm06:}选择之,发现很多条件。
其中“Key is down”是指当某个键按下时执行这个事件。
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/7.png
之后选择一个键,按一下Shift即可.w.
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/8.png
现在事件列表里出现了一个事件:
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/9.png
但它还没有执行的效果。在右边添加动作:
[*]点击右边的Add action
[*]选择Player
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/10.png
[*]选择Set speed
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/11.png
[*]输入400(原来是200,增加后提速为400)
[*]确定即可
不过现在只是按下Shift之后变为双倍速度,却不会变回来……所以需要加上“除此之外的场合”——Else条件。
右键加入Else条件:
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/12.png
快捷键为X(只要按一下X键即可)。
出现了一个新的事件。复制右边的动作到下面:
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/13.png
快速的方式是按住Ctrl后拖动动作。
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/14.png
双击可以修改:
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/15.png
改为200后保存,测试一下,效果……是主角会乱跑……
调查原因,是使用了Set speed(让对象一直以这个速度运动)而没用Set max speed(设置最大速度)。
因此重做了这两个事件,如下:
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/16.png
再次测试后发现效果好多了{:nm06:}
对象也有Ctrl复制的方法,这种方法将会导致创建另一个该对象的类的实例,比较难理解=-=于是做了一张图来解释一下
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/17.png
类的所有实例一般都有共同特征,例如怪物A都会攻击玩家,而怪物B不会,那么怪物A和怪物B应属于不同的类。
于是今天做一个怪物吧{:nm04:}
这个怪物的设计是:
[*]不会移动
[*]当碰到玩家时会攻击玩家一次
[*]HP为4(好弱
玩家可以按空格键攻击它,玩家攻击力为1HP/次。
还有一个特性是……被攻击的箭头会闪烁。
那么先加入一个Sprite,名字叫做RedEnemy{:nm12:}
我拿了一张调整过色调的图片=-=自己改一下色调好了=-=
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/miniarrow-enemy.png
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/18.png
这次不用Behaviors做,因为没有对应的行为……
切换到事件页,加入事件:Player→On collision with another object→RedEnemy
只是现在主角还没有HP值(感觉不到疼痛啦啦啦
所以要给它加上HP的实例变量和闪烁行为
[*]选择Player
[*]添加行为:Flash(闪烁)
[*]选择Instance variables里的Add / edit
[*]点击“+”加入一个变量
[*]Name是hp
[*]Initial value(初始值)是15(你也可以自己设定)
[*]Description(注释)可以不填……
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/19.png
[*]确定即可
[*]类似地,加入atk实例变量用于记录主角的攻击力
现在主角的属性栏如下所示。
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/20.png
对于敌人,也做类似设置:加入Flash行为、加入hp、atk实例变量……
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/21.png
(上面那张图中我还漏掉了atk变量,请自行加上)
切换回事件页,加入刚才那个事件的动作:
[*]Player→Instance variables→(带有绿色图标的)Subtract from→变量为hp,减去的值为RedEnemy.atk
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/23.png
[*]Player→Flash→如下图设置
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/22.png
现在事件页如下:
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/24.png
解释一下RedEnemy.atk这个值,是指RedEnemy对象的atk变量的值,中间用“.”(英文句号)分割。可以使用界面上方的窗口快速输入:
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/25.png
测试后发现主角撞到敌人后就会闪烁,不过我们还不知道主角的HP到底是多少了←不过这是下节课内容.w.
现在给主角装备上剑(就是加上攻击行为
添加事件:Player→Is overlapping another object→RedEnemy
表示主角是否在怪物上(与碰撞不同,碰撞只是在碰到的那一刻触发事件,而这个条件是一直触发)
给它加另一个条件:
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/26.png
Keyboard→On key pressed→空格
就像这样:
http://satgo1546.ftp.urpgs.com/contents/URsC2Tutorial/img/2/27.png
添加动作:
[*]RedEnemy→Subtract from→hp→Player.atk
[*]RedEnemy→Flash(和之前一样的参数)
再次测试,主角可以攻击了~
不过现在怪物不会死= =添加事件:
[*]RedEnemy→Compare instance variable→hp ≤ 0
[*]RedEnemy→Misc→Destroy
再次测试,敌人死了~
So much today~今天的内容:
[*]键盘
[*]事件
[*]“Else”分支
[*]设置对象速度
[*]碰撞检测
[*]销毁一个对象(Destroy)
[*]实例变量
[*]闪烁
嘛~于是今天的作业:
目标做一个可以攻击的主角,再做一个怪物(差不多就是跟着教程做一遍)
难度III/X
提交方法回复事件页的截图
奖励30银币
感谢收看本期C2从零学起;吐槽Sonic的FTP坏了于是范例等好了再发吧…… 突然发现图片全烂了. .(难道我的网络又看不到某些服务器的东西了. .? 竟然有实例变量!
竟然有对象!
竟然是面向对象的!
我承认C2很强大._.
Scratch必须死(怎么跑这里来了=-= FTP可以说修好了. .
只是根目录暂时不可用. .
子目录没有问题.w. Sonic1997 发表于 2014-2-6 13:40 static/image/common/back.gif
FTP可以说修好了. .
只是根目录暂时不可用. .
子目录没有问题.w.
不过糟糕的是填坑动力又没了{:nm11:}
[@]Sonic1997[/@] 现在似乎还是不能用的样子……
是/ftp目录不能用,/目录可以{:nm03:}
不过http://ftp.urpgs.com/satgo1546/contents/URsC2Tutorial/img/2/1.png是403,http://ftp.urpgs.com/satgo1546/ftp/contents/URsC2Tutorial/img/2/1.png是404。。。
(上面的地址自动变成img了……右键查看网址吧 satgo1546 发表于 2014-2-7 10:56 static/image/common/back.gif
[@]Sonic1997[/@] 现在似乎还是不能用的样子……
是/ftp目录不能用,/目录可以
ftp是我测试用的,由于属于root所以没有权限
暂时先自己将权限修改到644以上吧. . 交作业!~ 本帖最后由 灰太狼Wolffy55 于 2014-2-8 13:25 编辑
运行截图
是不是应该加上这行。 灰太狼Wolffy55 发表于 2014-2-8 13:15 static/image/common/back.gif
运行截图
是不是应该加上这行。
不过由于玩家死了之后都是进入Game over界面,因此一般不这么设计。具体内容请参见遥遥无期的第8课(大概
页:
[1]
2