【发布时间】:2013-02-16 16:42:52
【问题描述】:
我已经定义了一个函数,可以让我沿对角线移动对象:
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
代码有效,但问题是它没有按照我的意愿行事。现在,如果我靠近它,物体就会加速,这看起来很奇怪。我很清楚为什么会这样,但是有没有一种简单的方法可以将速度固定为恒定,而不是方向?
【问题讨论】:
-
是时候学习一些三角学了!你可以计算它需要经过的角度,然后用 sin 和 cos 得到 x 和 y。从这里你可以乘以你想要去的速度。
-
@placeybordeaux:虽然三角函数可以工作,但这不是必需的。
标签: python pygame game-physics