gpt4 book ai didi

c# - 二维游戏物理向量问题

转载 作者:行者123 更新时间:2023-11-30 19:00:14 25 4
gpt4 key购买 nike

我一直在用 C# 编写一个简单的程序,其中一个Ball [X,Y] 坐标周期性递增。

我已经设法实现了一种碰撞检测方法,但我正在尝试确定如何以一个相对的角度反射球,使其沿着相同的线性路径弹回。

dx = -dx //This bounces the ball back along the same linear path
dy = -dy

解决方案三角学

theta = range between 0<theta<=360 depending on where it bounced
x = cos(theta)*time
y= sin(theta)*time

最佳答案

牛顿物理学的全部要点在于它不是随机的,它是确定性的。如果你以相同的角度、相同的速度和相同的旋转将同一个球扔向同一堵墙,它每次都会到达同一个地方。

这类类(class)对于编程和物理学来说都是非常好的学习机会。我鼓励您首先编写一个程序来模拟非常简单的弹跳。正如您所注意到的,当一个物体直线向下移动并撞击水平表面时,您可以将弹跳建模为简单地反转垂直速度分量。做对了;没有重力,什么都没有。这是一个很好的开始。

然后尝试以相同的方式添加水平墙壁的弹跳。

然后尝试在与水平或垂直方向对齐的墙壁上添加弹跳。这就是您必须学习矢量和三角函数如何工作的地方,因为您必须计算出球的速度的哪个分量因倾斜撞击墙壁而改变。

然后添加重力。然后从空气中增加摩擦力。然后添加球可以旋转的事实。添加弹力,让模型球可以变形。

一旦达到这一点,如果您想引入随机性,您将能够弄清楚如何去做。例如,您可以通过说“好吧,当球撞击墙壁并变形时,我将引入一个将其变形改变 0-10% 的随机元素”来引入随机性。这将改变模拟弹跳球的方式。您可以尝试不同类型的随机性:例如,添加随机气流。

关于c# - 二维游戏物理向量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4169739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com