微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。