我正在尝试给玩家增加击退,但他不会移动。我知道该函数已正确调用,并且if语句起作用,因为他仍然会受到损害,但玩家根本不会移动。
奇怪的是,如果我将addForce放在其他地方(如update()方法中的一样),它将起作用,但在这种情况下不起作用。
一些帮助将不胜感激
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Enemy")
{
TakeDamage(-20, 21);
theRB.AddForce((collision.transform.position - transform.position).normalized * 100, ForceMode2D.Impulse);
}
}
如果有帮助,刚体将如下所示:
最佳答案
嘿,我认为这里的问题是您对
(collision.transform.position - transform.position)
我将使用碰撞的接触点来计算方向,并将其保存在Vector中。然后将向量归一化并乘以-1,以朝相反的方向启动播放器。这是一些示例代码:
Vector2 dir = collision.contacts[0].point - transform.position;
// Flip the vector and normalize
dir = -dir.normalized;
// Apply Force
theRB.AddForce(dir * 100, ForceMode2D.Impulse);
关于c# - Addforce不会击退我的玩家角色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58854148/