如何在 Scratch 中平滑动画?主要是,我想要这样当你按住右箭头时,它会向右移动而没有任何明显的抖动。另外,当你拿着箭头时,从头开始会让你等待一秒钟再重复。我怎样才能把这些东西弄平?
7 回答
我知道这是一个老问题。但如果有人正在寻找解决方案,请查看这个临时项目:http ://scratch.mit.edu/projects/276298/
只需添加永久循环并在此循环内检查是否按下箭头键。如果是 - 移动。这样您就不会依赖键盘重复率。
你可以做,直到“未按下箭头”
按下箭头时重复移动(或滑行)直到没有按下箭头
然后它不会在设定的时间间隔检查按键,使移动更顺畅。
使用 Scratch,您可以使用Glide
长距离或间隔获得非常平滑的运动。然而,这种方法的缺点是滑翔操作必须在精灵可以进行任何感知之前完成,例如边缘或碰撞检测。这通常是不可取的。
您所说的按键时的小延迟实际上与键盘的重复率直接相关。当您按下键盘上的某个键时,会发送该键事件,但在重复开始之前会有一小段延迟。如果您能找到改变系统键盘重复率的方法,这将延续到 Scratch。
在 Scratch 中可以进行多少优化是有限度的。毕竟,它是一个非常基本(但非常有趣)的入门级编程环境。:)
你可以这样做:
When flag pressed
forever
if (right arrow pressed?) then
change xs by 1
xs = xs * 0.8
change x by (xs)
每次都检查是否按下了右箭头,如果是,它将变量更改为xs
1。稍后,它将 xs 乘以 0.8,因此该值明显衰减。
然后它通过 var 改变精灵的 x xs
。
您可以做到这一点的一种方法是使用变量和自定义块来制作参数以平滑运动。添加一个名为 speed x 的变量,并使用速度 X 的永久变化 X。我没有任何快照或示例,但您可以使用自定义块中的脚本来平滑滑动它。
您可以为平滑 x 移动执行此操作:
forever
change x by (([amount] - (x position)) / [divide])
哪个“数量”是您想要移动的数量,“除”是它的平滑程度。(对平滑 y 执行相同操作)
或者您也可以平滑 x 和 y 移动:
forever
go to x: (([amount] - (x position)) / [divide]) y: (([amount] - (x position)) / [divide])
此外,您可以使精灵平滑地滑向鼠标:
forever
go to x: (((mouse x) - (x position)) / [divide]) y: (((mouse y) - (x position)) / [divide])