首页 > 其他 > 详细

Scratch 3.6角色碰到边缘反弹方向再讨论

时间:2020-04-03 10:40:23      阅读:209      评论:0      收藏:0      [点我收藏+]
引言

在Scratch中角色的移动是按一定方向移动的,所以方向在角色的移动中很重要,特别是在绘制一些几何图案的时候,不仅要考虑好移动距离,还必须确定好移动方向。
下图给出Scratch 3.X中精灵的方向规定。
技术分享图片

Scratch积木“碰到边缘就反弹”

Scratch的基本积木模块“碰到边缘就反弹”,其反弹遵循物理学上光线的反射规律,即“入射角等于反射角”(入射方向与法线夹角为入射角;反射方向与法线夹角为反射角)。参考下图:
技术分享图片

为了下面讨论方便,我们特别定义一个概念,即精灵的方向角。

【定义】沿原点向精灵的中心点作射线,则此射线与Y轴正方向的夹角,称为“精灵的方向角”。

这个角度与角色的方向角之间有如下关系:
? 当角色碰到的是上下边缘反弹后,
如果角色的当前方向角为a=30,150,-30,-150,则其方向角为150,30,-150,-30。规律:符号相同,且和为180。
? 当角色碰到的是左右边缘反弹后,其方向角为-a。
如果角色的当前方向角为a=30,150,-30,-150,则其方向角为-30,-150,30,150。
利用上面规律,在程序中如果让角色碰到某角色或颜色后反弹时,其反弹后的方向可用上面的办法确定,从而使我们的程序中的反弹效果更符合实际情况。

特殊情况

当一个角色移动到屏幕四个角位置而它体积又比较大,从而出现这个角色与相邻两边缘相碰的情况,那么它的反弹方向是如何的呢?
实验的结果是:反弹后的方向是原来方向的反方向,即:
? 原来是45度方向时,反弹后的方向是-135
? 原来是-45度方向时,反弹后的方向是135
? 原来是-135方向时,反弹后的方向是45
? 原来是135方向时,反弹后的方向是-135
若碰上边缘与下边缘,如果入射角为正/或负,则出射角为正/或负,即符号相同,两者入射角与出射角绝对值为180。
若碰左右边缘,入射角与出射角符号相反。

小结

有了上面结论,在开发小游戏时,即可区别对待,在判定出上述大的碰撞类型之后,再计算反弹角方向与大小就比较容易了。

引用

http://www.360doc.com/content/18/0517/08/6507680_754592197.shtml

Scratch 3.6角色碰到边缘反弹方向再讨论

原文:https://blog.51cto.com/zhuxianzhong/2484496

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!