如何在pygame中直线移动对象?

问题描述

首先,我计算了欧几里得距离,然后我尝试使用循环进行迭代以使用斜率到达某个点,但移动路径不像直线。请帮我爱。

def move(roborect,grad):
   power=(x_cord[0]-roborect.x)**2+(y_cord[0]-roborect.y)**2
     distance=math.sqrt(power)
     if(distance>15):
        roborect.y=int(grad*roborect.x)+roborect.y
        roborect.x=roborect.x+5
        print(distance)
   

解决方法

计算从物体到目标的方向向量。归一化方向向量 (Unit vector)。将向量缩放到一定长度,然后将向量添加到位置:

dx = x_cord[0]-roborect.x
dy = y_cord[0]-roborect.y
distance = math.sqrt(dx*dy + dy*dy)
if distance > 15:
    vx = dx * 5 / distance 
    vy = dy * 5 / distance 
    roborect.x += vx
    roborect.x += vy