【问题标题】:OnTriggerEnter2D AddForce to object not workingOnTriggerEnter2D AddForce 到对象不起作用
【发布时间】:2021-12-16 08:08:09
【问题描述】:

我试图在玩家击中触发器时向前推动它。突出显示的对象有一个 BoxCollider2D,触发器为 true。如果玩家进入触发器,它将推动/迫使玩家前进。现在当玩家按下扳机时它什么也不做。

玩家有一个rigidbody2D,我将重力设置为0,因为这是一款自上而下的RPG游戏。

private void OnTriggerEnter2D(Collider2D other) {
    if(other.gameObject.tag == "Player"){
        other.gameObject.GetComponent<Rigidbody2D>().AddForce(transform.right * 100, ForceMode2D.Impulse);
    }
}

【问题讨论】:

  • 调试是否说你到达了 if 语句中的命令?总的来说,代码对我来说似乎很好。确保“其他”游戏对象确实有它的rigidBody2D,而不是它的孩子
  • @Joe 是的,我做了一个日志,当玩家进入时它会触发
  • 将速度改为 0 而不是 addForce 有效吗?
  • ForceMode2D.Impulse 取决于刚体的质量。你的播放器的质量是多少?
  • 您的代码看起来不错,因此您必须向我们展示您的设置。向我们展示打开刚体面板的 Player 的 Inspector 窗口,向我们展示 BoxCollider2D 的 Inspector,并向我们展示 Edit -> Project Settings -> Physics 2D 菜单。

标签: c# unity3d game-physics


【解决方案1】:

您可以使用新的 Vector3(1,0,0)*100 来代替 transform.right。 如果这不起作用,那么您可以使用 AddForce 的 instread:

private Rigidbody2D rb= other.gameObject.GetComponent();
rb.velocity= new Vector3(100,rb.velocity.y,rb.velocity.z);

【讨论】:

    猜你喜欢
    • 2016-04-03
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    相关资源
    最近更新 更多