弹跳球逻辑

Luc*_*elt 6 c++ algorithm bounce game-physics

我有一个弹跳墙的球.这个反弹很简单,我只是这样做,(代码片段)

if ( x - moveSpeed < 0 ) // Ball hit left wall
    xVel *= -1;
Run Code Online (Sandbox Code Playgroud)

但是我也有一个玩家移动的矩形.这种反弹实际上就像墙上的反弹一样.

但是我发现,当一个球像图片一样运动时,我不可能让它再次直线上升.因此,我需要对矩形运动进行某种计算以影响球的输出角度.移动时矩形始终保持恒定的移动速度.这张照片显示了一个向左移动的矩形,球在移动过程中撞击它,形成90度角.(不应该总是90).

抱歉我的蹩脚图片我希望它们有意义.我的数学生锈了,这就是为什么我真的需要朝着正确的方向努力.

Gab*_*iel 9

这是一个关于某些物理学的教程(这是你需要知道的),你需要学习矢量.本教程并没有完全按照你要求的内容(反弹和角度反映),但这是一个很好的开始,因为你需要知道这一切才能完成你的项目.游戏物理101

如果你想以简单的方式做到这一点,这里是c ++中的代码,它描述了如何做你想要的东西.

编辑


你应该首先检查第二个链接,它是一个关于你需要知道什么的教程.但是如果你想做的不仅仅是让球反弹,比如包括其他移动的物体或类似的东西,请查看第一个链接.


jbr*_*aud 6

这里不需要任何花哨的数学.我对这些类型的比赛的理解是球从球拍离开的角度取决于它在球拍上反弹的位置.如果它在中间反弹,则保留当前角度.当它靠近桨叶的边缘弹跳时,角度在桨叶的那一侧的方向上调节.将桨叶看作圆形表面.

  • 记住打乒乓球,即使球拍是静止的,如果球接近末端,角度也会在那个方向受到很大影响.我认为@Treebranch是对的.我认为撞击时桨的运动并没有影响它 - 只有球击中的地方. (4认同)