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 到对象不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在另一个函数中从 OnTriggerEnter2D 访问值?