A2 · 第3集 · 4:59
Scratch中角色移动
本集学习在Scratch中添加角色、设置初始位置,并用键盘控制移动。
来源:ericgrisperez / tube-numerique-educatif.apps.education.fr · 许可:CC BY 4.0
字幕
Bonjour à tous, aujourd'hui dans cette vidéo Scratch,
大家好,今天这期Scratch视频中,
nous allons apprendre à placer un personnage à l'écran et le déplacer avec les
我们将学习如何在屏幕上放置一个角色,并用键盘按键来移动它。
touches du clavier.
(我们将学习如何在屏幕上放置一个角色,并用键盘按键来移动它。)
Première chose que nous allons faire, c'est changer de lutin.
我们要做的第一件事是更换角色。
Nous n'allons pas travailler avec le chat Scratch,
我们不用Scratch默认的小猫角色,
mais nous allons chercher un autre lutin dans la bibliothèque.
而是从角色库中挑选另一个角色。
Pour cela, vous appuyez sur l'icône du petit chat et vous appuyez sur la loupe.
为此,请点击小猫图标,再点击放大镜图标。
Dans la bibliothèque, nous allons chercher dans la catégorie Animaux
在角色库中,我们进入“动物”分类,
le lutin qui s'appelle Monkey, donc symbolisé par un singe qui est juste là.
找到名为‘Monkey’的角色——就是这只猴子。
Vous cliquez sur le lutin et il va venir se placer à l'écran.
点击该角色,它就会出现在屏幕上。
Nous n'avons plus besoin du chat,
我们不再需要小猫了,
donc vous allez sur le lutin en cliquant dessus et vous appuyez sur la petite
所以请先点击小猫角色,再点击右下角的垃圾桶图标。
poubelle. Celui- ci disparaît.
小猫就消失了。
Nous voici avec notre singe, donc qui situe sur notre écran.
现在,我们的猴子角色已显示在屏幕上。
Nous allons lui donner une position de départ.
接下来,我们为它设定一个起始位置。
Moi j'aimerais que les pieds du lutin touchent le bord de l'écran.
我希望角色的双脚刚好触碰到屏幕底部边缘。
Comment faire?
该怎么做呢?
Nous avons vu dans une vidéo précédente que Scratch fonctionnait avec une grille
之前的一期视频中我们学过,Scratch使用的是直角坐标系网格,
repère orthonormé qui nous permet, grâce aux coordonnées,
借助坐标,我们可以精确定位角色的位置。
de placer notre lutin. Donc ici, si je veux placer mon lutin,
所以,如果我想把角色放在指定位置,
ça va être difficile de lire par rapport à la grille, et nous avions vu en
单靠观察网格很难准确判断,
astuce que Scratch me fournissait directement les coordonnées lorsque je déplace mon
但之前我们也学过一个小技巧:Scratch会在拖动角色时实时显示其坐标。
lutin. Ici je le déplace en maintenant mon clic gauche,
这里,我按住鼠标左键拖动角色,
et je vois les coordonnées se mettre à jour.
就能看到坐标值随之实时更新。
Je vais simplement emmener mon lutin en bas de l'écran pour faire en sorte que les
我只需把角色拖到屏幕最下方,
pieds touchent le bord.
让它的双脚刚好贴住屏幕底边。
Voilà. Ici je vois que mon lutin se trouve en x zéro et y moins 108.
好了。这里我看到我的角色位于x=0、y=-108的位置。
Nous savons que la grille fait 180 pixels du centre de l'écran.
我们知道,网格从屏幕中心向上延伸180像素。
vers le haut et 180 pixels de plus du centre de l'écran vers le bas.
再向下延伸180像素。
Alors pourquoi est- ce que y est à- 108 et non à- 180?
那么,为什么y坐标是-108,而不是-180呢?
C'est tout simplement si on se souvient que le pixel analysé par Scratch se situe au
这很简单——只要记住:Scratch实际分析的像素点,
centre de notre lutin.
位于我们角色的正中心。
Donc il faut toujours imaginer qu'autour de notre lutin se situe un rectangle,
因此,我们总要想象角色周围有一个矩形框,
et que si je rejoins les diagonales de mon rectangle,
如果连接这个矩形的两条对角线,
je vais retrouver un point au centre de celui- ci,
它们的交点就在矩形正中心,
et c'est ce point- là qui est analysé par Scratch.
而Scratch分析的正是这个点。
Donc ici on voit que le- 108, le centre de notre lutin, se situe au
所以这里可以看到,-108这个y值(即角色中心)
niveau de son cou.
对应的是角色脖子所在的高度。
Il vaut mieux déplacer son lutin et récupérer les coordonnées directement données
更好的做法是移动角色,直接读取Scratch给出的坐标值。
par Scratch. Nous allons maintenant faire en sorte que le lutin,
接下来,我们要让角色在游戏开始时,
au début de mon jeu, commence toujours à la même place.
始终出现在同一位置。
Car ici, si je le déplace avec ma souris ou si un joueur le déplace
因为目前,如果我用鼠标拖动它,或者玩家不小心用鼠标移动了它,
malencontreusement à la souris, lorsque je vais relancer mon jeu,
当我重新启动游戏时,
il sera alors cette position et ses pieds ne toucheront plus terre.
它就会停留在那个位置,双脚就不再接触地面了。
Donc la première chose à faire sera de placer le lutin à l'endroit où vous souhaitez
因此,第一步是把角色放到你希望它开始的位置,
qu'il commence, puis nous allons aller chercher sa position.
然后获取它的当前位置坐标。
Si nous allons dans la rubrique des mouvements,
如果我们进入‘运动’分类,
je vais retrouver un bloc intéressant qui s'appelle aller à.
会发现一个很有用的积木,叫作‘移到’。
Aller à me permet d'aller à des coordonnées x et y automatiquement.
‘移到’功能可以让我们自动跳转到指定的x和y坐标。
Par exemple, je vois dans ce bloc aller à x moins un et y moins 107 que ces
例如,我看到这个‘移到x=-1,y=-107’的积木中,
coordonnées sont exactement les mêmes que celles analysées par Scratch.
这些坐标值与Scratch实际分析的坐标完全一致。
Donc si je prends ce bloc que je mets dans la partie des scripts,
因此,如果我取这个积木,把它放到脚本区,
si je bouge malencontreusement mon lutin, que j'appuie sur ce bloc,
又不小心移动了我的角色,再点击这个积木,
il viendra se remettre automatiquement
它就会自动回到原位。
à sa place. Par contre, il faut bien faire attention,
但要注意一点:
ce bloc ne se met pas à jour si votre bloc est déjà sorti.
如果您的积木已经移出原位,这个积木就不会自动更新。
Par exemple, ici, je bouge mon lutin,
例如,这里我移动了我的角色,
je vois ici que les coordonnées ont changé, j'ai x 99 et y 45.
可以看到坐标已改变——x为99,y为45。
Ce bloc, par contre, est resté à- 1- 107,
而这个积木仍显示为-1和-107,
et le bloc dans la catégorie mouvement, lui, s'est bien mis à jour,
可运动类里的积木却已正确更新,
x 99 y 45. Donc avant de déplacer le bloc dans la partie des scripts,
显示为x 99、y 45。因此,在把积木拖到脚本区之前,
on commence par placer son personnage à la bonne place,
我们先将角色放到正确位置,
puis seulement on va chercher le bloc dans la catégorie mouvement.
然后再去运动类别中选取这个积木。
Ce bloc est très utile, mais il ne marche pas tout seul.
这个积木非常有用,但不会自动运行。
Il faut à chaque fois que je vienne appuyer dessus pour que celui- ci se déclenche.
每次都需要我手动点击,它才会触发。
Donc pour initialiser un programme,
因此,要初始化一个程序,
nous utiliserons systématiquement un bloc d'événements qui servira de chapeau à
我们会始终使用一个事件类积木,作为每个程序的“帽子”(起始块)。
chacun de mes programmes.
每个程序都以它为起始。
Dans la catégorie événements, nous allons retrouver celui que nous utiliserons le
在事件类别中,我们会找到最常使用的那个积木——
plus souvent, le drapeau vert.
绿色旗帜。
Le drapeau vert est situé au- dessus de la scène.
绿色旗帜位于舞台上方。
Quand un joueur va venir essayer mon jeu, il commencera par appuyer sur le
当玩家尝试我的游戏时,会先点击
drapeau vert qui déclenchera l'ensemble des programmes qui ont pour chapeau le
绿色旗帜,从而触发所有以绿色旗帜为起始块的程序。
drapeau vert. Je prends donc ce bloc d'événements et je viens le superposer à
因此,我取来这个事件类积木,叠放在另一个积木上。
l'autre. Je vois ici que les deux blocs vont s'accrocher,
我看到这两个积木自动连接起来了。
donc à chaque fois que j'appuierai sur drapeau vert, le singe
也就是说,每次我点击绿色旗帜,
viendra se mettre à sa place.
猴子就会回到它的初始位置。
Ici, je mets mon singe n'importe où, le joueur arrive,
这里,我把我的猴子放在任意位置,玩家一来,
il appuie sur le drapeau vert et le singe se met bien à sa place.
就点击绿色旗帜,猴子就会准确地落到它的位置上。