好吧,因为你可以环绕屏幕的任何边缘,小行星和船之间总是有4条直线(向上和向左,向上和向右,向下和向左,向下和向右).我只计算每个的长度并取最小的结果.
int dx1 = abs(ship_x - asteroid_x);
int dx2 = screen_width - dx1;
int dy1 = abs(ship_y - asertoid_y);
int dy2 = screen_height - dy1;
// Now calculate the psuedo-distances as Pete suggests:
int psuedo1 = (dx1 * dx1) + (dy1 * dy1);
int psuedo2 = (dx2 * dx2) + (dy1 * dy1);
int psuedo3 = (dx1 * dx1) + (dy2 * dy2);
int psuedo4 = (dx2 * dx2) + (dy2 * dy2);
Run Code Online (Sandbox Code Playgroud)
这显示了如何计算所涉及的各种距离.将每一个映射到适当的方向有一点复杂性.
| 归档时间: |
|
| 查看次数: |
252 次 |
| 最近记录: |