A2 · 第6集 · 4:56

Scratch中角色互动

本集讲解如何用Scratch实现角色间的互动,例如当老鼠碰到猫时触发像素化效果。

来源:Montagne Vincent / tube-numerique-educatif.apps.education.fr · 许可:CC BY 4.0

字幕

  1. Coder un jeu avec Scratch, sixième épisode,

    用Scratch制作游戏,第六集,

  2. dans lequel nous allons voir que les lutins peuvent avoir des interactions entre

    我们将学习角色之间如何互动。

  3. eux. Comme par exemple ici dans le jeu du chat et de la souris,

    比如在这个“猫抓老鼠”游戏中,

  4. lorsque la souris touche le chat, il se passe quelque chose,

    当老鼠碰到猫时,就会发生一些事情:

  5. il y a une interaction, la souris grossit, le chat est pixelisé.

    出现互动——老鼠变大,猫变成像素化效果。

  6. Et dans l'autre jeu à côté, lorsque les tirs du vaisseau spatial,

    再看旁边的另一个游戏:当飞船发射的子弹(也是角色)

  7. qui sont des lutins, lorsque les tirs touchent la sorcière également,

    碰到女巫时,

  8. il y a une interaction qui apparaît entre le tir

    子弹与女巫之间也会产生互动:

  9. et la sorcière, la sorcière est pixelisée et le tir disparaît.

    女巫变成像素化效果,子弹则消失。

  10. Donc c'est ce genre d'interaction que nous allons apprendre à coder avec Scratch,

    因此,我们今天就来学习如何用Scratch编写这类互动效果。

  11. et nous y allons tout de suite.

    现在就开始吧!

  12. Alors, nous y voici.

    好了,我们到了。

  13. Vous reconnaissez donc, je suis avec le jeu du chat et la souris,

    大家应该认出来了——我现在打开的是‘猫和老鼠’游戏,

  14. vous reconnaissez le script que nous avons écrit à l'épisode précédent pour déplacer

    也还记得上一集编写的脚本:

  15. le chat avec les touches du clavier.

    用键盘按键控制猫移动。

  16. Nous avons ici le script que nous allons continuer,

    这里是我们将要继续编辑的脚本,

  17. c'est le script d'initialisation que nous avons écrit à l'épisode 3.

    也就是第三集编写的初始化脚本。

  18. Donc ça c'est l'initialisation du chat.

    这是猫的初始化设置。

  19. Pour la souris, j'ai aussi l'initialisation que nous avons vue à l'épisode 3,

    对于老鼠,我也保留了第三集学过的初始化脚本,

  20. et son mouvement que nous avons vu à l'épisode 4 pour que la souris se dirige toute

    以及第四集学过的移动脚本:

  21. seule vers le chat.

    让老鼠自动朝猫的方向移动。

  22. Alors si je clique sur le drapeau vert ici, la souris poursuit le chat,

    点击绿旗后,老鼠开始追逐猫,

  23. mais il ne se passe rien quand elle l'attrape,

    但即使抓住了猫,也什么都不会发生。

  24. et c'est ce que nous allons essayer de faire maintenant qu'il se passe quelque chose

    接下来,我们就来实现这个功能:

  25. quand la souris attrape le chat.

    当老鼠抓住猫时,触发相应效果。

  26. Alors pour cela, nous allons donc compléter le script du chat,

    为此,我们将完善猫咪的脚本。

  27. on va écrire à la suite du script d'initialisation,

    接着写在初始化脚本之后。

  28. et nous allons avoir une condition, c'est si la souris touche le chat,

    这里要加一个条件:如果鼠标碰到猫咪,

  29. alors il va se passer quelque chose.

    那么就会发生某件事。

  30. Donc je mets un bloc conditionnel si alors,

    我先放一个‘如果…那么…’条件积木。

  31. et comment je sais si la souris a touché le chat?

    那怎么判断鼠标是否碰到了猫咪呢?

  32. Je vais aller dans les capteurs,

    我去‘侦测’类别里找。

  33. et ici j'ai un bloc qui s'appelle toucher avec un point d'interrogation.

    这里有一个带问号的‘碰到’积木。

  34. Et on peut savoir si le lutin a touché le pointeur de la souris,

    它能检测角色是否碰到了鼠标指针,

  35. ou bien s'il a touché le bord de l'écran,

    或者是否碰到了舞台边缘,

  36. nous verrons ça dans le prochain épisode,

    这部分我们下期再讲。

  37. ou bien s'il a touché un des autres lutins.

    或者是否碰到了其他角色。

  38. Donc je vais vérifier ici, est- ce que le chat a touché la souris?

    所以我要检查:猫咪是否碰到了鼠标?

  39. Et là, je veux qu'il se passe quelque chose.

    这时,我希望触发某个动作。

  40. Alors ce que je voudrais moi, c'est un effet de pixelisation

    我想给猫咪添加像素化效果,

  41. sur le chat, donc je vais dans Apparence,

    所以我进入‘外观’类别,

  42. et nous allons utiliser les effets de pixelisation, donc on va ajouter.

    使用像素化图形效果,点击‘添加’。

  43. Par exemple 50 à l'effet graphique de pixelisation.

    比如把像素化效果值设为50。

  44. Alors on a plusieurs effets

    这里还有多种图形效果,

  45. graphiques ici, vous pouvez les essayer un par un pour voir ce qu'ils donnent.

    你可以逐个尝试,看看各自的效果。

  46. Alors si je regarde maintenant qu'est- ce qui se passe.

    现在我们来看看会发生什么。

  47. Alors j'aimerais bien vous poser la question, qu'est- ce qui va se passer?

    我想请大家思考一下:接下来会发生什么?

  48. Il se passe rien, et on va essayer de savoir pourquoi.

    结果什么也没发生,我们来查查原因。

  49. Il se passe rien parce que quand je clique sur le drapeau vert,

    什么都没发生,是因为点击绿旗后,

  50. le script va être lu.

    脚本会被执行一遍。

  51. Donc il y a l'initialisation, le lutin est allé à sa place,

    因此,首先进行初始化:角色移动到指定位置,

  52. il s'est mis à la bonne taille, il est sur le bon costume,

    调整为正确大小,并穿上正确的造型,

  53. l'orientation est la bonne,

    朝向也设置正确,

  54. et la boucle, si la souris est touchée, on ajoute 50

    接着进入循环:如果鼠标碰到角色,

  55. à l'effet pixelisé.

    就给“像素化”效果加50。

  56. Cela ne s'est pas fait parce que quand j'ai cliqué sur le drapeau vert,

    但这并未生效,因为当我点击绿色旗帜时,

  57. le script s'est lu très rapidement,

    脚本执行得非常快,

  58. c'est quasiment instantané la lecture de ce script,

    几乎是瞬间完成,

  59. et ça n'a été lu qu'une seule fois.

    而且只运行了一次。

  60. Donc ici, quand j'ai cliqué sur le drapeau vert, la

    所以,刚才我点绿色旗帜时,

  61. souris n'est pas sur le chat.

    鼠标并不在角色(小猫)上。

  62. Tiens, là on verra après ce qui s'est passé.

    瞧,稍后我们就能看到发生了什么。

  63. Donc ça n'a pas fonctionné.

    因此,它没有起作用。

  64. Donc ce que nous allons faire,

    接下来我们要做的是,

  65. c'est que nous allons dire au jeu de répéter ça indéfiniment durant tout le jeu.

    让游戏在整个运行过程中无限重复这个操作。

  66. Donc je vais rajouter ici une boucle" répéter indéfiniment".

    因此,我将在这里添加一个‘无限重复’循环。

  67. Et là, ça devrait marcher, j'espère.

    现在应该可以了,希望如此。

  68. Voilà, il y a un effet de pixellisation qui s'est mis.

    看,像素化效果已经应用上了。

  69. Alors, il se passe des choses, vous voyez,

    嗯,确实发生了一些变化,您看到了吗?

  70. on va régler ce problème tout de suite. Quand j'ai cliqué sur le drapeau vert,

    我们马上来解决这个问题。刚才点击绿色旗帜时,

  71. On va recommencer, voilà, donc là le chat a disparu,

    我们重新开始——看,小猫消失了,

  72. donc l'effet de pixellisation, il a été fait un petit peu trop,

    也就是说,像素化效果被过度应用了,

  73. on va voir pourquoi tout à l'heure.

    稍后我们再分析原因。

  74. Donc si maintenant je clique sur le drapeau vert, regardez ce qui se passe,

    那么,现在我再点一次绿色旗帜,请注意发生了什么:

  75. le lutin apparaît pixellisé.

    角色一出现就呈现像素化效果。

  76. Si je recommence, tiens, ça l'a pas fait, c'est bizarre.

    如果我重新开始,喏,这次没出现那个效果,真奇怪。

  77. Je recommence.

    我再试一次。

  78. Je clique sur le drapeau vert, le lutin apparaît pixelisé.

    我点击绿色旗帜,角色就以像素化效果出现了。

  79. Alors pourquoi cela?

    那么,这是为什么呢?

  80. Parce que mon lutin est

    因为我的角色

  81. dans la position initiale ici, je vais faire aller la souris jusqu'à lui.

    正处在初始位置——我来把鼠标移到它上面。

  82. Voilà, donc la souris est positionnée ici,

    好了,现在鼠标就停在这里,

  83. le lutin l'effet pixelisé s'est répété un petit peu trop de fois,

    而角色的像素化效果却重复得太多次了,

  84. parce que en fait le test" si la souris touchée, je fais l'effet graphique,

    这是因为检测条件是:‘如果鼠标碰到角色,就执行图形效果’,

  85. j'ajoute 50 à l'effet graphique",

    并且每次还给图形效果值加50,

  86. ça va se répéter ça tant que la souris touche le chat.

    只要鼠标一直碰着角色,这个操作就会不断重复。

  87. Et ici c'est le cas puisque la souris ne bouge plus, elle est sur le chat,

    而此刻正是这种情况:鼠标没再移动,一直停在角色上,

  88. donc ça se répète beaucoup de fois.

    所以效果就反复执行了好多次。

  89. Donc on va limiter ça.

    因此,我们需要限制一下。