皮伽姆角运动

2024-06-28 19:14:14 发布

您现在位置:Python中文网/ 问答频道 /正文

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

    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

代码可以工作,但问题是它不能实现我想要的功能。现在,如果我靠近它,物体会加速,这看起来很奇怪。我很清楚它为什么会这样做,但是有没有一种简单的方法可以使速度保持恒定,而不是方向呢?在


Tags: 对象函数if定义calcelsedy对角线
1条回答
网友
1楼 · 发布于 2024-06-28 19:14:14

如果你这样做,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

相关问题 更多 >