拖拉怪兽碰撞墙壁
这篇文章会介绍在 Scratch 里使用广播功能,让怪兽与墙壁的角色互动,搭配重复无限次、侦测鼠标按下、座标、移动、旋转...等积木,实作用鼠标拖拉怪兽,撞到墙壁时墙壁会晃动的互动效果。
角色设定
在角色编辑区,删除猫咪角色,加入“怪兽 Frank”和“洞穴”两个角色 ( 参考:Scratch 角色设定 )。
洞穴背景:图片来源
调整怪兽和洞穴的位置,使其看起来就像怪兽位于洞穴里的样子 ( 洞穴图片大小要大于舞台,晃动时才不会出现白边 )。
积木程序原理
首先编辑“怪兽”角色,实作用鼠标拖拉怪兽的效果:
- 放入点击绿旗积木,点击绿旗时,让怪兽图层移到最上层,并设定回转方式为“不设限”。
- 放入重复无限次积木,每次重复时,判断鼠标是否点击怪兽角色 ( 碰到鼠标和鼠标按下同时发生 ),如果鼠标正在点击怪兽,将怪兽的位置移动到鼠标的位置。
接着设计“往左拖拉时,怪兽会往左倾斜,往右拖拉时,怪兽会往右倾斜”的效果:
- 新增 x、x1 和 dx 变数,作为计算怪兽往左或往右移动使用。
- 在刚刚的“定位到鼠标位置”积木下方,将 x 设定为 x 座标。
- 将 dx 设定为 x - x1 ( 透过前后 x 座标计算是往右还是往左移动 )。
- 等待 0.001 秒,作为 x 和 x1 的时间差。
- 默认面朝 90 度 ( 如果 dx 为 0 )。
- 判断如果 dx>0,表示怪兽往右移动,让怪兽往右倾斜 ( 面朝 120 度 )。
- 判断如果 dx<0,表示怪兽往左移动,让怪兽往左倾斜 ( 面朝 60 度 )。
- 将 x1 设定为 x 座标。
完成后,切换到“专案页面”( 检视模式 ),用鼠标拖拉怪兽,就能看到倾斜的效果。
为什么要切换到专案页面呢?因为在程序编辑页面,舞台区的角色位置可以透过鼠标移动 ( 编辑 ),因此无法模拟出正确的效果。
新增另外一个点击绿旗积木,放入重复无限次积木,判断鼠标放开怪兽时,就让怪兽滑行回 (0,0) 的舞台中心点。
再新增一个点击绿旗积木,放入重复无限次积木,判断怪兽碰到边缘,且 dx 不等于 0 ( 表示怪兽倾斜,正在被拖拉 ),就发送广播消息 ( 让洞穴角色接收 )。
怪兽角色完成后,接着编辑“洞穴”角色:
- 新增点击绿旗积木,点击绿旗时,让洞穴定位到 (0,0)。
- 新增收到广播消息 message1 的积木。
- 收到消息时,透过“重复 10 次”、“定位”、“随机数”积木,让洞穴晃动 10 次。
- 晃动结束后,定位到 (0,0)。
完成效果
完成后,回到“专案页面”,点击绿旗,拖拉怪兽撞到墙壁时,墙壁就会震动。
范例解答
范例解答:拖拉怪兽碰撞墙壁
微信扫码关注
抖音扫码关注