0

我已经定义了一个函数,它允许我沿对角线移动对象:

    if(myX > targetX):
        dx = myX - targetX
    else:
        dx = targetX - myX 
    if(myY > targetY):
        dy = myY - targetY
    else:
        dy = targetY - myY

    if(dy == 0):
        dy = 1
    if(dx == 0):
        dx = 1

    #Calc Movement
    if(dx < dy):
        Speedy = dy/dx 
        Speedx = 1
    if(dx > dy):
        Speedy = 1
        Speedx = dx/dy
    elif(dx == dy):
        Speedx = 1
        Speedy = 1

    if(myX < targetX):
        Speedx = Speedx * -1
    if(myY < targetY):
        Speedy = Speedy * -1


    return Speedx,Speedy

该代码有效,但问题是它没有做我想要的。现在,如果我靠近它,物体就会加速,这看起来很奇怪。我很清楚为什么会这样,但是有没有一种简单的方法可以将速度固定为恒定,而不是方向?

4

1 回答 1

2

如果你这样做,dx 和 dy 是从你的人指向目标的向量的标量。然后除以它们的大小,这里表示为 dz。现在 dx 和 dy 代表一个单位向量。将它们乘以速度后,您的对象将以恒定的速度移动,但方向会发生变化。

import math

#set speed to how fast you want your guy to move
speed = 1
dx = myX - targetX
dy = myY - targetY

dz = math.sqrt(dx**2 + dy**2)

speedx = dx/dz * speed
speedy = dy/dz * speed
于 2013-02-16T16:51:30.443 回答