在 Unity3D 中用力推动对象

push object with add force in Unity3D

我制作了敌人跟随玩家的自上而下射击游戏。如果他们碰你,他们会用 AddForce 推你。我已经设法做到了,但只是在特定的方向上。问题是如果敌人从玩家的右边过来,他们仍然会把你推到右边而不是他们来的相反方向。我试图检测敌人的旋转以增加他们正在看的地方的力量。这是有效的原始脚本,但它只向右推送:

public Rigidbody2d playerrb;
public GameObject enemy;
float force = 2f;

void OnCollisionEnter2D(Collision2D collision){
    playerrb.AddForce(transform.right * force, ForceMode2D.Impulse);
}

这是我尝试过的:

public Rigidbody2d playerrb;
public GameObject enemy;
float force = 2f;

void OnCollisionEnter2D(Collision2D collision){
    playerrb.AddForce(enemy.transform.rotation * force, ForceMode2D.Impulse);
}

我会使用玩家和敌人之间的差异向量

public Rigidbody2d playerrb;
public GameObject enemy;
float force = 2f;

void OnCollisionEnter2D(Collision2D collision){
    var direction = (playerrb.position - enemy.transform.position).normalized;
    playerrb.AddForce(direction * force, ForceMode2D.Impulse);
}