在 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);
}
我制作了敌人跟随玩家的自上而下射击游戏。如果他们碰你,他们会用 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);
}