拖拽怪兽碰墙壁
故事背景:
怪兽被困在洞穴里,被激怒的怪兽不停的撞击洞穴,洞穴晃来晃去,感觉要被震塌了!

程序原理:
洞穴的震动其实就是背景的 X、Y 坐标不停的变化,所以这个背景图我们应该设置为角色,而不能是背景,而且这张背景图要稍微大点,否则震动的时候会显示白色。而角色左右移动是跟鼠标点击有关系,难点在于判断角色点击是往左还是往右。
如何判断角色是往左还是往右呢?这里我们设置了 两个参数,分别为鼠标点击的 X 坐标,和间隔 一段时间后鼠标的 X1 坐标,一开始 X1 坐标为 0,当点击左侧的时候,X-X1 应该是负数,应为我们的角色在中间,X1 是负的。点击右侧,X 是正数,X-X1>0。我们让dx = X-X1,那么当 dx>0的时候,是往右移动,dx<0,则往左。那么当间隔一段时间后,X1=X,也就是 dx=0,这个时候我们角色停止移动。
开始编程
1、添加怪兽和洞穴的角色...调整怪兽和洞穴的位置,使其看起来就像怪兽位于洞穴中(洞穴的图片要大于舞台,晃动的时候才不会出现空白)

2、怪兽角色的程序:
- 添加点击绿旗的积木,点击绿旗的时候让怪兽移动到图层的最上层,并将旋转方式设定为任意旋转
- 使用重复执行的积木,每次重复执行的时候,判断鼠标是否点击怪兽角色(碰到鼠标和鼠标同时按下发生),如果鼠标正在点击怪兽的时候,将怪兽的位置移动到鼠标的位置。
3、这里我们设置了 两个参数,分别为鼠标点击的 X 坐标,和间隔 一段时间后鼠标的 X1 坐标,一开始 X1 坐标为 0,当点击左侧的时候,X-X1 应该是负数,因为我们的角色在中间,X1 是负的,这个时候角色向左倾斜(面向60度)。点击右侧,X 是正数,X-X1>0。我们让dx = X-X1,那么当 dx>0的时候,是往右移动,dx<0,则往左,角色倾斜向右(面向120度) 。那么当间隔一段时间后,X1=X,也就是 dx=0,这个时候角色回到中心,面向为90度。
完成以后,切换到全屏模式下,使用鼠标拖拉怪兽就可以看到倾斜的效果

4、新增另外一个点击绿旗的积木,放入重复执行,判断鼠标放开怪兽的时候,让怪兽回到舞台的中心点.

5、在新增另一个绿旗被点击,重复执行,判断怪兽彭代边缘,dx不等于0(表示怪兽倾斜,正在被拖拉)。就发送广播信息(角色洞穴接受消息)

6、怪兽角色完成以后,接着编辑洞穴角色:
- 新增点击小绿旗,绿旗被点击的时候定位到(0,0)
- 新增接受到碰撞的消息积木
- 接收到消息以后 通过重复十次,移动,随机数的积木,让洞穴晃动10次
- 晃动结束以后定位到(0,0)
这节课就到这里,课后多练习下!✌🏻
遇到问题给我留言!