1. 项目概述
项目说明
该项目是实现经典的街机游戏——弹球机。使用DE1-SOC开发板上的滑动开关,玩家可以设置球的初始速度。然后,按下按钮将球释放到柜子中,球将根据其当前的速度和方向与周围的物体进行碰撞交互。玩家可以按下另外两个按钮来控制左右两个拨片,以尝试将移动的球保持在柜子中。分数根据球的比赛时长进行记录,当球离开柜子/显示器时游戏结束。此外,玩家还可以切换 DE1-SOC上的开关来启用/禁用艺术模式,艺术模式是让玩家可以根据球的路径在柜子上进行绘画。
2. 物理原理
将速度分解为 x 和 y 分量,负速度表示向显示屏上的 0,0 或屏幕的左上角移动,正速度表示向屏幕右下角移动。
发射球时系统会根据滑动开关的设定来给球一个 y 方向的初速度,球的运动过程中要考虑重力对球的影响。比如在玩实际机器时,如果球没有足够的速度,由于箱体的角度,它会落回到弹簧上。
当球沿斜面向下移动,若不考虑摩擦、滚动、滑动等其他因素时,加速度方程只基于箱体的倾斜度。如下图所示,加速度的方向是朝向柜子的底部,大小等于重力乘以倾斜角的正弦值。这意味着需要在一定数量的循环后将 y 方向(即朝向显示屏底部)的速度增加 1。
当球绕柜子移动与物体发生碰撞时,速度会在 x 和 y 方向上发生变化。当球从静止物体上弹起时,它会以与该物体撞击时相同的角度离开。
为有效计算,只考虑当前速度矢量 [x 速度,y 速度] 和正在撞击的物体的单位法线矢量。然后将使用以下方程计算新的速度矢量:v' = 2*(n dot v)*n + v。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !