【发布时间】:2010-09-03 19:24:29
【问题描述】:
我正在尝试制作游戏 Asteroids。我现在遇到的问题是,如果您按向上箭头键,它会将“船”向上移动 10 个像素。如果你按下左箭头键,它会将“船”向左转 5 度,当你左转或右转时,我遇到的问题就会发挥作用。然后尝试向上移动。它不会向转向的方向移动。它只会将转动的“船”沿 Y 方向移动 10 度。
我想做的是有一个叫做方向的变量,把这个变量想象成一个 360 度的圆。我想要做的是每次我击中左箭头时,它会从方向中减去 5,它从 0 开始并从 360 向后退,因此将其设置为 355。然后我将 355 除以 10 并得到 35.5。然后我将 10 除以 35.5 得到 0.355。然后我会从 10 中减去 0.355(在 Y 轴上向上移动)。并从 0 中减去它(在 X 中向左移动)。所以我会在 Y 轴上移动 9.645,在 X 轴上向左移动 0.355。
我遇到的问题是小行星中的“船”我有一个 Graphics.FillPie,它需要 Ints 用作起始角和扫角,但是正如你所看到的,我必须使用双打或浮动。我很确定我把它复杂化了,而且我很确定有些东西要简单 100 倍,我在想一些类似于 Bresenham 线算法的东西。如果有人可以通过建议更简单的方法或解决我的问题来提供帮助,将不胜感激。提前致谢。
【问题讨论】:
-
tigonometry 在这里会有所帮助。我不知道你是如何提出你的算法的,即使它适用于某些情况,它也可能会在一般情况下返回奇怪的结果。
标签: c# game-physics angle bresenham