我正在为一个班级项目设计一款乒乓球游戏重制版,但我的球总是卡在某些墙壁上来回卡住......
这是负责检测墙壁碰撞并反转球方向的模块:
我尝试以多种方式重新排列逻辑,但无济于事,尽管在纸面上它应该可以工作...不幸的是,Scratch 不允许 >= 等运算符,所以我必须使用 if x > y 或 x = y ...另外,似乎 if 语句没有运行,因为我尝试在碰撞时更改背景,但它也没有触发...
连续的 IF 语句相互抵消
这是程序逻辑的简化版本。如果您在 Scratch IDE 中运行它,您会发现输出值与输入值相同。为什么大于screen_x时值没有变化?
如果您按照图中的注释进行操作,您会注意到两个“if”语句都被执行。第一个更改值,第二个将其更改回来。所以这个逻辑显然不能帮助我们扭转球的轨迹。您也许可以通过使用 if-then-else 逻辑来解决此问题,但还有更好的方法。
(点击图片可放大)
幸运的是,Scratch 可以通过 If on Edge, Bounce 块为您处理球的物理特性。请参阅 ScratchTeam 的 Pong Starter 了解简单示例。