游戏开发 - 将对象从一个点移动到另一个点

时间:2012-05-14 17:45:36

标签: c# .net winforms

我正在使用C#/ .NET(Windows Forms)开发游戏。在玩游戏时,有一种情况是物体从一个点移动到另一个点(从左到右)。右侧点的坐标是固定的。但是,物体的位置(向右移动)不是事先知道的,因此其坐标不是事先知道的,所以我们不能有硬编码路径。

我想生成一条路径,以弯曲的方式将对象从左点移动到右点(就像我们在Angry Birds中抛出鸟类一样),而不是以直接的方式。

下面的图片可以帮助您了解情景。

Enter image description here

是否有算法或任何API来执行这些任务?

4 个答案:

答案 0 :(得分:2)

您可以计算对象的物理trajectory。对于你正在寻找的东西,简单的公式是一些具有初始速度的物体的运动,并且在没有阻力和风的情况下受到重力的影响。该轨迹为parabola

考虑到初始速度和重力,路径是固定的。你可以解决轨迹方程,以便在投掷后的某个时间获得目标x,y或物体的位置。

答案 1 :(得分:1)

这不是很难做到的。当需要移动对象时,首先获取其坐标(此时您将知道它)。使用projectile motion的等式得到其路径的等式,然后沿着该路径移动它。

答案 2 :(得分:1)

你需要行走一个非规范椭圆弧。如果你阅读维基百科文章 Ellipse ,你会发现一些有趣的方法来实现这一点,但这应该让你开始:

Enter image description here

'a'和'b'是您的半径。

所以现在只需重构公式来隔离X并再次重构以隔离Y ...

答案 3 :(得分:0)

我找到了一个更简单的解决方案。使用Bezier curve transform,我可以按照我想要的方式生成路径。