【问题标题】:Rigidbody 2D doesn't stop刚体 2D 不会停止
【发布时间】:2020-11-28 13:41:13
【问题描述】:

在我的场景中,我在运行时实例化了一个预制件,它有一个动态 Rigidbody2D 和一个 BoxCollider2D; 它还有一个带有 OnTriggerEnter2D 方法的脚本,它运行以下函数:

/* ... */
public Rigidbody2D rigidbody;

private void StopMovement()
{
    rigidbody = GetComponent<Rigidbody2D>();
    rigidbody.velocity = Vector2.zero;
    Debug.Log(rigidbody.velocity);
}

基本上我希望对象在与触发器发生碰撞时停止。问题是它不会停止,即使控制台消息显示(0.0, 0.0),刚体的检查器看起来像这样:

如您所见,它的速度实际上并不为零。 我尝试添加

rigidbody.constraints = RigidbodyConstraints2D.FreezeAll;

但它所做的只是冻结 预制件上的位置,而不是实际的 gameObject 实例。而且我不明白这怎么可能,同时考虑到脚本上的 Rigidbody 字段被Ball(clone) 占据,这是场景中游戏对象的名称。 我也尝试在 Awake/Start 中使用 GetComponent 而不是在那里,但结果是一样的。

我已经在此处和 UnityAnswers 上查找了许多其他帖子,但没有一个可以帮助我。到底发生了什么?

【问题讨论】:

  • 当我读到这篇文章“但它所做的只是冻结预制件上的位置,而不是实际的游戏对象实例”时,我不确定你在追求什么。当你说球在击中扳机时应该停止时,你到底在追求什么?
  • 我不确定我是否理解您的问题。我有一个在我的场景中移动的游戏对象,我希望它停止移动,就是这样。实际发生的是脚本以预制文件(项目中存在的文件,而不是场景中的文件)为目标,而不是场景中的对象。看到Constraints 下拉菜单下的那些复选框了吗?当函数运行时,它们会在预制件中发生变化,但不会在场景对象上发生变化。

标签: unity3d rigid-bodies prefab


【解决方案1】:

您访问的是预制件,而不是实际的 gameObjecy 和刚体。当你实例化球时,使用一个

'GameObject ballClone = Instantiate(ballpref, pos, quaternion);'

通过这种方式你可以访问ballClone.getcomponent(),它会正常工作

【讨论】:

  • 感谢您的回答和您的宝贵时间。是的,您的解决方案确实有效,但我仍然不明白为什么我的解决方案没有。你是说没有办法在运行时影响预制实例,除非它在实例化后立即保存在一个字段中?预制件在实例化后不应该像普通的游戏对象一样工作吗?
  • 不,因为如果您使用公共 GameObjecy 并将预制件拖入其中,您将只需控制该预制件。预制件它只是一个像其他对象一样的对象,但是当您实例化您正在克隆它时,但是如果您调用您实例化的变量,您正在访问预制件本身。我有用吗?
  • 我认为通过将预制件分配给 Inspector 字段,它会自动定位从该预制件创建的所有未来实例。我已经发现情况并非如此,但无论如何谢谢!
  • 不,但是如果你放置一个标签并使用 GameObject[] copies = GameObject.FindGameObjectsWithTag(); 你可以找到每个实例化的对象和每个克隆如果你愿意,请投票:)
  • 感谢您的 cmets 和您的时间,但我已经找到了一个不涉及在运行时查找引用的解决方案,您可以从我自己对这个问题的回答中看到 :)
【解决方案2】:

事实证明,导致这种奇怪行为的原因与自定义事件系统有关,这就是为什么花了这么长时间才弄清楚的原因。 基本上,我将预制件指定为事件侦听器检查器中的目标对象,认为它的效果会自动应用于该预制件的所有实例,但最终它不会那样工作。 如果有人有同样的问题,我通过将 Event Listener 组件放在不同的目标对象上来解决它,所以基本上它引用自己并导致预期的行为。

感谢大家的时间,现在可以关闭了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2020-09-02
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多