如何解决如何在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 举报,一经查实,本站将立刻删除。