epo*_*olf
3
c++
graphics
physics
我正在写一个Pong游戏,我遇到了一个问题.
我想弄清楚如何从一条线上弹出一个点.
我能想出的最好的方法是
- 计算球的当前和未来位置.
- 线段:{Ball.location,Ball.location + Ball.direction}(Ball.location和Ball.direction使用自定义矢量/坐标类)
- 计算生成的线段是否与任何墙壁或桨叶相交.
- ??? 不知道该怎么做(将在一个单独的问题中提问)
- 在第一个十字路口发现
- 将球弹出球线
- 创建一个形成的三角形
- a = Ball的当前位置
- b =线的交点.
- c = Ball在线上当前位置的最近点.
- 找到球击中线的角度
- angle = cos(距离(b,c)/距离(a,b))
- 找到旋转球方向的角度
- 旋转Ball的方向并将其移动到新的位置
- 否则,如果没有交叉点
这是一种可以接受的方法还是我错过了什么?