Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数学Java游戏编程角度

我正在努力学习游戏编程和角度

我试着做一个游戏,你踢一个球,当它撞到墙上时,它应该以一定的角度从墙上反弹,这取决于球撞到墙上时的速度

在尝试了几天之后,我甚至不知道从哪里开始。我看过很多其他的问题,但当我读代码的时候,我甚至不知道它应该是什么意思。我的数学一直很好,但我不知道如何将其应用到游戏编程中。如果你能帮我朝正确的方向轻轻一推,我将不胜感激

Here is little picture representing what i'm trying to do.


共 (2) 个答案

  1. # 1 楼答案

    确实有一个主要因素促成了这一点

    1. 你的入口角度

    因为你只是一个初学者,用速度计算角度需要复杂的数学,而且不会使你的返回角度有太大的不同。(除非你以每小时500英里的速度行驶)

    你的入口角度由你与中心的偏移量来确定。在本例中,我将向您展示两种场景。以及你需要在游戏中实现的一般数学

    第一个场景:一句台词

    让我们回到几何学。一条直线加起来就是180度

    因为它是直的,无论你的速度是多少,你进入的角度等于你退出的角度。如果你的球在0进入,那么你的球将在0退出

    如图所示,球将以相同的角度返回和退出

    那么数学呢

    if enter angle is 0 then exit angle is 0

    如果它不是直线进入呢

    因为你的返回面是一条直线,所以你的入口角再次等于你的出口角

    enter image description here

    但如果你的返回面不是一条直线呢

    你的返回面角度是需要的

    通过将返回曲面的角度添加到入口角度,可以得到出口角度

    enter image description here

    这是我们在没有速度的情况下对入口和出口角度的基本计算。(再说一次,除非你以500英里/秒的速度行驶,否则你的速度不会有太大的差别。)

    根据你的照片,你需要有单独的行数据来计算你的回报

    enter image description here

    我真的希望我能给你一个计算回程角的大致概念。我希望这些图片能给你一个直观的印象,帮助你理解更多。祝你好运:)

  2. # 2 楼答案

    你的球将以给定的向量移动。如果你能将碰撞器或触发器附加到游戏中的对象上,你需要检查球和墙是否发生碰撞。如果是这样的话,假设你与左边的墙发生了碰撞,你可以简单地将球的x方向乘以-1,从而从墙上反弹。所有的墙都可以这样做。如果你从顶墙反弹,翻转y