如何根据壁反弹来改变x和y速度

问题描述 投票:0回答:2

[我在空闲时使用称为构造3的sudo编程语言软件对简单的超级休闲手机游戏进行编程,因为我仍在学习实际的语言,还不能充分利用它们来制作游戏。

基本上,我正在编写自己的超简单弹跳球物理引擎。在这个我的小型弹球游戏中,我最多有3个球。我给每个球一个x速度和y速度实例变量。

这是我的问题:当球以任意角度从表面弹回时,x和y速度如何变化?我知道,如果地板是平坦的并且碰到那个,x保持不变,y翻转极性。我知道碰壁会发生相反的情况。但是除了4个主要轴外,我不知道如何计算其他角度。我确定这是一个简单的触发函数。哦,把您的答案愚蠢到您可以做出的最简单的sudo代码响应。

trigonometry physics game-development
2个回答
0
投票

[如果物体与角度为alpha的平面发生任何碰撞,则您的物体将以角度-alpha弹回。另外,您拥有所谓的动量守恒,这意味着,如果您的表面不移动且不吸收任何东西,则对象的总速度也将不会改变。

话虽这么说,“您需要做的就是将表面相对于水平的角度都设为参数[[]]和对象进入表面的角度,因此您可以轻松记录角度alpha 。这样,在曲面的框架中发生碰撞后,您将能够在对象与曲面之间获得-alpha角,然后,您只需返回“水平框架”,只需添加您的表面。就您的实现而言,这是我的建议:

    从函数horizontalToAngularFrame开始,该函数将采用一个或多个参数,具体取决于您是2D还是3D,因此您可以定义角度
  • 用相同数量的参数编码另一个功能AngularFrameToHorizontal
  • [当物体进入碰撞时,就像对待水平框架中的物体一样对待,并使用先前编码的两个功能将角度恢复为水平框架

0
投票
首先,您需要球行进的角度和表面的角度。这样,您将知道球以哪个角度击中“墙”。
© www.soinside.com 2019 - 2024. All rights reserved.