我正在用 C#/.NET ( Windows Forms ) 开发游戏。在玩游戏时,有一个场景是物体从一个点移动到另一个点(从左到右)。右侧点的坐标是固定的。然而,物体的位置(要向右移动)是事先不知道的,因此它的坐标是事先不知道的,所以我们不能有一个硬编码的路径。
我想生成一条路径,它以弯曲的方式将对象从左点移动到右点(就像我们在Angry Birds中扔鸟一样),而不是以直线方式。
下面是可以帮助您理解场景的图像。
是否有执行此类任务的算法或任何API ?
我正在用 C#/.NET ( Windows Forms ) 开发游戏。在玩游戏时,有一个场景是物体从一个点移动到另一个点(从左到右)。右侧点的坐标是固定的。然而,物体的位置(要向右移动)是事先不知道的,因此它的坐标是事先不知道的,所以我们不能有一个硬编码的路径。
我想生成一条路径,它以弯曲的方式将对象从左点移动到右点(就像我们在Angry Birds中扔鸟一样),而不是以直线方式。
下面是可以帮助您理解场景的图像。
是否有执行此类任务的算法或任何API ?
这并不太难做到。当需要移动对象时,首先获取其坐标(此时您将知道它)。使用射弹运动方程得到其路径的方程,然后沿着该路径移动它。
您需要通过非规范椭圆的弧线。如果您阅读 Wikipedia 文章Ellipse,您会发现一些有趣的方法来实现这一点,但这应该可以帮助您入门:
'a' 和 'b' 是你的半径。
所以现在只需重构公式以隔离 X 并再次重构以隔离 Y ...
我找到了一个更简单的解决方案。使用Bezier 曲线变换,我可以按照我想要的方式生成路径。