一个物体相对于另一个物体的推进

Propulsion of an object relative to another one

我有一个玩家,我有一颗子弹,是被玩家拥有的武器射中的。我想要它,以便当子弹接触到瓷砖时,玩家被推向相反的方向,推进速度与距离相关。这不是一项简单的任务(至少对我而言)。但这是我想要的……:

我首先想到了使用向量。所以我做了这个功能:

def calculate_vector(self, x1, y1, x2, y2):
    return x1 - x2, y1 - y2

这个函数会 return 玩家应该使用矢量去子弹的相反方向。它确实有效。但是,现在这是我的问题,我想根据子弹的距离有不同的 speed/power。如果玩家真的离子弹很近,那么它应该比玩家离子弹 20 像素更远。同样,如果玩家离子弹太远,它就不会被推进。

我试图实现它,但我似乎无法找到如何实现它。如果有人有想法,也许只是提示如何做,或者解释,将不胜感激!

因为你有玩家相对于子弹位置的位置,你可以找到这两个值的斜边,并根据斜边的大小用不同的值推动玩家。以下是查找斜边的方法:https://en.wikipedia.org/wiki/Pythagorean_theorem

(斜边就是长度)