OnTriggerEnter2D AddForce 到对象不起作用

Posted

技术标签:

【中文标题】OnTriggerEnter2D AddForce 到对象不起作用【英文标题】:OnTriggerEnter2D AddForce to object not working 【发布时间】: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 菜单。 【参考方案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);

【讨论】:

以上是关于OnTriggerEnter2D AddForce 到对象不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Unity OnTriggerEnter2D

如何在另一个函数中从 OnTriggerEnter2D 访问值?

unity ontriggerenter2d 有时不工作

unity OnTriggerEnter2D 不能重复使用

AddForce();AddRelativeForce();FixedUpdate()

Unity OnTriggerEnter2D 未注册