c++ - 弹跳球逻辑

标签 c++ algorithm game-physics bounce

我有一个可以在墙壁上弹跳的球。这个弹跳很简单,我就是这样做的,(代码片段)

if ( x - moveSpeed < 0 ) // Ball hit left wall
    xVel *= -1;

但是我还有一个玩家移动的矩形。其上的反弹实际上相当于墙上的反弹。

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

对不起,我的照片很糟糕,我希望它们有意义。我的数学很生疏,这就是为什么我真的需要朝着正确的方向插入。

最佳答案

这是一个关于一些物理学的教程(这是你需要知道的),你需要学习 vector 。本教程没有详细介绍您正在寻找的内容(反弹和角度的反射),但这是一个很好的开始,因为您需要了解所有这些才能完成您的项目。 Game Physics 101

如果您想以简单的方式做到这一点,here是用 C++ 编写的代码,它准确描述了如何执行您要查找的操作。

编辑


您实际上应该先查看第二个链接,它是关于您需要了解的确切内容的教程。但是,如果您想要做的不仅仅是让球弹跳,比如包括其他移动物体或类似的东西,请查看第一个链接。

关于c++ - 弹跳球逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8715592/

相关文章:

c++ - g++中的尾递归问题

unity-game-engine - unity3d : A ring hanging from a horizontal pipe

javascript - 需要有关 javascript 和三 Angular 函数的帮助

java - 这个程序怎么是先序遍历呢?

performance - 为什么使用二分搜索的插入排序比使用线性搜索的插入排序慢?

python - 如何通过指定规则改变边缘的权重?

javascript - 添加相对于对象的速度

c++ - lldb 和合成提供程序 : follow pointer

c++ - Lambda 捕获 'this' 保存为 std::function

c++ - 自动填写表格并运行程序