【发布时间】: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