将球从表面弹起

2023-12-07

我目前正在编写像《Breakout》这样的游戏,我想知道如何才能正确地将球从表面弹起。

我采用了将速度旋转 90 度的简单方法,即:

[vx, vy] -> [-vy, vx]

这(毫不奇怪)效果不太好。如果我知道球的位置和速度,以及球将击中的点(但会反弹),我怎样才能将球从该点反弹?

限制条件:

  • 我正在使用整数数学(无 FP 任何地方)
  • 我所有的表面都很简单 平坦的表面(垂直, 水平或块)
  • 我只想以 90 度角弹开
  • 所有碰撞都是纯弹性的(这是突破——不需要摩擦等)

我不需要任何特定于语言的代码。如果有人可以提供一个关于如何正确执行此操作的小数学公式,那对我来说效果很好。

Thanks!


假设您只会从垂直或水平表面弹起,则可以分别取消 X 或 Y 方向上的速度。

所以,如果你有 [vx, vy],并且它从垂直的墙上反弹,你就会有 [-vx, vy]。

如果你有 [vx, vy],并且它从水平墙上反弹,你将得到 [vx, -vy]。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将球从表面弹起 的相关文章

  • AngularJS $http.post() 触发 get 请求而不是 post

    我在 Angular 和 Laravel 中构建 API 服务 当我向 API 发起 GET 调用时 一切工作正常 但是当我发起 POST 调用时 服务仍然使用 GET 方法而不是 POST 这就是我的服务 function LeadsAP
  • 在 Magento 中查找正确的模板和块

    我正在尝试更改 Magento 单页结帐页面 我已经搜索过 find iname onepage 我在 Magento 目录中得到了 5 6 个 onepage phtml 结果 其中几个页面具有完全相同的来源 或几乎完全相同的来源 有没有

随机推荐