【问题标题】:Unity Attaching objects in gameUnity 在游戏中附加对象
【发布时间】:2021-12-30 13:56:04
【问题描述】:

您好,我遇到了问题,我不知道如何解决。 我想创建一个 3d 拼图,玩家需要移动多个 3D 对象才能将它们组合在一起。我已经知道如何实现运动(LeanTouch),但我需要一种方法来识别两个物体何时在特殊位置相互接触。然后我会使用转换来组合它们。有没有人知道如何解决这个问题?

【问题讨论】:

  • 将它们添加到父级?所以他们一起移动
  • 给他们Rigidbody,然后使用物理和Joints,特别是Fixed joint

标签: c# unity3d vuforia


【解决方案1】:

解决此问题的一种方法是在要检测碰撞的特定位置创建带有碰撞器的子对象。然后在 OnCollisionEnter() 中,您实际上可以通过创建两个对象的新父对象来组合它们。这是我采用的方法的一个示例:

我这样设置我的碰撞器:

然后我在单个对撞机上添加了这段代码。 Front 只是附加到层次结构中显示的对撞机的标签。

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Front"))
        {
            var newParent = new GameObject();
            newParent.transform.SetParent(collision.transform.parent.parent); // Get the parent of the current gameobject the collider is attached to
            collision.transform.parent.SetParent(newParent.transform); // Doing .parent because this is the child collider
            transform.parent.SetParent(newParent.transform);
        }
    }

这并不完美,但结果是对象被合并在同一个父项下。

或者,您可以通过删除 NewParent 并将其替换为 collision.transform.parent 来简单地使一个立方体成为另一个立方体的子级。

【讨论】:

    【解决方案2】:

    您可能应该为此使用碰撞器,然后使用碰撞事件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多