320 likes | 460 Vues
将对象联合起来 : 使用列表. By Deborah Nelson Duke University Professor Susan Rodger July 13, 2008. 概况. 这个教程将会叫你使用列表 . 列表是用来存放一些对象的地方 . 使用列表,你可以让多个对象同时做相同的动作,而不必分别去操作他们 . 你也可以让他们依次做同一个动作 . 我们将会使用一个列表使得多个忍者同时完成相同的动作,然后让他们依次(按照时间顺序)完成这个动作. 创建世界. 打开一个新的世界,可以使用任意模版 . 保存 .
E N D
将对象联合起来:使用列表 By Deborah Nelson Duke University Professor Susan Rodger July 13, 2008
概况 • 这个教程将会叫你使用列表.列表是用来存放一些对象的地方. • 使用列表,你可以让多个对象同时做相同的动作,而不必分别去操作他们 . 你也可以让他们依次做同一个动作. • 我们将会使用一个列表使得多个忍者同时完成相同的动作,然后让他们依次(按照时间顺序)完成这个动作.
创建世界 • 打开一个新的世界,可以使用任意模版. • 保存. • 当你打开文件之后,点击一个绿色的名为“Add Object”的按钮(位于屏幕中间). • 点击more controls 按钮. 点击drop a dummy at the camera. 将dummy重命名为originalPosition. 点击Done返回原来界面.
增加对象 • 进入gallery 然后进入People 文件夹. 在你的世界中增加四个evilNinja对象。 • 增加另外两个人物到你的世界中. • 我添加了scientist_man和scientist_woman(位于Web Gallery).
第一部分:创建列表 • 我们会使用列表使四个ninjas同时上下跳跃然后踢和旋转. • 单击左侧对象列表中的world,然后单击下面的properties. • 点击create new variable按钮. • 命名为characters. • 看下一张幻灯片的截图.
创建列表(续1) • 在弹出的灰框中, 选择object作为变量类型. • 然后勾选make a List选项. • 点击new item 按钮四次. • 对于item0, 点击<None>在下拉框中选择evilNinja. • 对于item1, 选择evilNinja2. • 对于item2, 选择evilNinja3. • 对于item3, 选择evilNinja4. • 见下一张的截图.
创建列表(续2) • 现在,在properties选项的顶端出现了一个characters列表.
第二部分: 添加方法 • 拖动For all together 到world.my first method.
添加方法(续1) • 在出现的下拉菜单中, 选择expressions, 然后选择列world.characters. • For all together 表示列表中所有的项目都会同时做出我们添加的动作.
步骤一: 对于所有的对象 • 点击For all together 声明后面的item_from_characters 按钮,按住你的鼠标向下拖动至写着Do nothing的地方.
对于所有的对象(续1) • 在出现的下拉菜单中选择turn to face,然后选择camera. • 点击more…,将duration 调整为0.25 seconds. • 如上步骤拖放item_from_characters 按钮两次,第一次选择move up 1 meter,另一个move down 1 meter。都将duration设置为0.25 seconds. • 运行你的世界. 你的方法如下图所示:
步骤二: 依次完成动作 • 现在拖动For all in order 至For all together下面,选择expressions, 然后world.characters.
依次完成动作(续 1) • For all in order (依次完成动作)表示忍者们将会依次完成我们添加的动作(顺序依照我们添加到列表的顺序)。 • 我们希望忍者们可以逐个扬起手臂并且旋转。 • 然而item_from_characters是一个整体, 所以我们不能让item_from_characters扬起它的左臂. • 我们需要在方法里面使用累级别设置来操作对象的一部分。
依次完成动作(续 2) • 首先, 如同之前的步骤,拖动item_from_characters到For all in order里,选择turnbackward¼ revolution. 将duration 设置为.25 seconds。 • 单击evilNinja在对象列表里. • 选择functions选项向下找到evilNinja’s part named key。
Step 3: Object part named key • 拖动这个方法到item_from_character的顶部在For all in order 指令中。
Object part named key (cont 1)对象部分命名键(续1) • 在对象树, 点击evilNinja旁边的+,就会看到名为leftLeg的子树。 2)在turn backward旁,点击框,然后输入leftLeg,跟它在对象树的大写部分与间距相同——没有间距,和第二个L必须大写。 • 按下一张幻灯片的截图的指示操作。
For all in order (cont 1) • 拖动位于evilNinja顶部的item_from_characters 到leftLeg对话框里。 • 再次拖动item_from_characters到For all in order 中,在 the leftLeg的下一个指令, 然后选择turn, 在继续向右的一个对话框中, 输入1 revolution. 设置duration 为0.25 seconds.
For all in order (cont 2) • 然后拖动另一个item_from_characters到For all in order中,选择turn, 然后点击forward,然后输入0.25 revolution. 设置duration为0.25 seconds. 目前你的For all in order 代码应该如图示:
For all in order (cont 3) • 我们需要最后做一个只有leftlag的说明 • 将evilNinja’s part named key函数拖到item_from_characters 那一行,然后再次输入leftLeg • 在part named key中,将item_from_characters拖到evilNinja顶部。
The complete method完成方法 • 下面是完成方法,记得评论你的代码
Step 4: Objects with different parts步骤四:对象的不同部位 • 到目前为止,我们的列表只有evilNinjas。添加两个其它对象到列表中: 1)在对象树中点击world 2)点击properties键进入对话框,然后点击characters旁边的框。 3)点击new item,然后选择你想添加的对象。 • 按下一张幻灯片的截图的指示操作
注意! • 玩你的世界 • 如果你没有按照示范使用相同的对象,你可能会得到一个错误高亮的部分命名函数。 • 添加scientist-man和scientist-woman到列表中只能用作他们的身体部位的的一个标签,因为他们都有leftLeg。 • 如果你的角色并没有一个名叫leftLeg部分,你会得到一个错误,因为世界正在搜索一个不存在的leftLeg进行移动。
Fixing the error • For example, I’ve added the Samurai (from the Web gallery in the People folder). • 比如,我已经添加了Samurai • When I add him to my list and play the world, I get the following error: • 当我把他添加到我的列表,玩世界时,我得到了错误提示。 • This is because the Samurai does not have a part named leftLeg. • 这是因为Samurai没有leftLeg.
Fixing the error (cont 1)纠正错误(续一) • 在对象树中,点击Samurai旁边的+ • 双击Lleg,重命名为leftLeg • 现在玩你的世界 • 成功!
How to remove an object如何移除一个对象 • 从列表中删除一个对象: • 在对象树中点击world 2)进入properties菜单,然后点击characters旁边的框 • 按下一张幻灯片的截图的指示操作。
Deleting an object from your list从列表中删除一个对象 • 3) 拖动你想删除的条目到垃圾桶中。 • 对象仍然存在于你的世界,但是它将从你的列表中移除。
摘要 • 列表适用于让多元人物执行相同的系列动作。 • For all together意味着列表中的所有对象同时执行任务 • For all in order意味着列表中的所有对象一个接着一个执行任务 • 使用part named key函数来生成对象移动的附带部分,但是但是确保所有的字符有相同的部分,标记相同的方式。 • 警告:不要添加太多的对象到你的列表中,因为这样会使大大地降低你的世界运转速度