我正在学习如何为视频游戏编写代码;具体来说,通过鼠标点击玩家运动。我遇到的问题取决于目的地,X可以在Y之前到达目的地,反之亦然。如何让X和Y同时到达目的地?
答案 0 :(得分:1)
让您有起点(x0,y0)
和终点(x1,y1)
。
因此坐标差异为dx = x1 - x0, dy = y1 - y0
- 方向向量的组成部分。
查找距离Len = Sqrt(dx*dx + dy*dy)
- 向量长度
获取规范化的方向向量分量udx = dx / Len, udy = dy / Len
现在每一步(在计时器事件等处)改变对应于该公式的位置:x = x0 + V * udx * t, y = y0 + V * udy * t
,其中V是速度,t是时间。该定律描述了线性运动。
通常值得计算和使用速度矢量分量vx = V * udx, vy = V * udy
- 在这种情况下,您可以轻松地从边界进行反射(对于垂直边界 - 只是否定vx
)等等。
请注意,如果您的屏幕坐标是整数,则必须在输出前对值进行舍入(不要对新步骤使用上一步的整数值)