关于用Scratch制作“打砖块”游戏时发现的问题思考及延伸

上午花了一个小时尝试做了一下打砖块游戏,发现实现近似的功能很简单,想要完美很难,主要原因还在于Scratch本身的机制上。下面逐一列举。

首先是球的反弹机制。Scratch内置了一个碰到边缘反弹的功能,可以直接拿来用,但在板子上的反弹角度如果也写成“入射角=出射角”的镜面反射,则会显得游戏性不足,变化太少,也没办法控制球的方向了。看了下网上的案例,大多是用随机发射角来解决这个问题的,即不管入射角度为何,出射角度都是一个随机数。这种方式虽然简单,但是也太违反物理规律了(在虚幻的世界里追求真实感的人一定脑子有问题)。个人觉得理想的方法是在板子中间区域进行镜面反射,而在边缘区域进行按入射路径原路返回的反射会比较有趣。这样一来,一个板子可能就需要三个角色来组合实现,分别设置球射在不同位置时的反射角。

第二是老生常谈的碰撞检测。在使球以速度10(移动10步)发射时经常出现“穿模”的情况,乃至球本来应该在砖块的外表面反射,结果成了在内表面反射,“虚空弹跳”。究其原因就是开头所说的机制,只能写成类似“移动10步后侦测是否碰撞”,如果球在走这10步时已经进入砖块了就会穿模。而如果减少移动步数,球速又太慢。如果像EV3那样可以写成“在看到红色前一直以x速度前进”的话就会方便很多。目前通过减小球体积或增大砖块及板子厚度,能稍有改善。

第三是砖块碰到球时,球反弹了但是砖块没消失的问题。这和之前做射击游戏时子弹和怪物的情况一模一样。经测试,在球碰到砖块后等待一个极短的时间(0.01s)再反弹可以极大改善这种情况。另外网上查到可以用砖块发出广播通知球反弹,也是个不错的方法。

奖励物的设计都比较简单,比如球变大变小,板子变长变短直接切换角色造型即可,球一变三直接克隆并按照本体反弹逻辑继续运动即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值