如何将刚体添加到建模软件的导入游戏对象中?

How to add rigidbody to a imported gameobject of a modeling software?

我在我的游戏中导入了一个游戏对象,它是我在 3d 建模软件中创建的。现在我想控制那个游戏对象的移动,这样一旦它碰到另一个游戏对象就应该停止他的移动。

我读到游戏对象需要一个刚体。那么我可以如何以及在脚本中的什么位置为该游戏对象添加一个刚体呢?

结论

这真是一个 101 Unity3D 问题。

在 SO 上提出此类问题之前,请先查看 www.unity3d.com 上的优秀教程。有一个自己的 Rigidbodies 部分来处理这个问题。示例清晰,视频教程和源代码(心,你还想要什么?)。


简短说明(编辑)

将您的模型拖到编辑器场景中。

Select 层次结构中具有模型名称的游戏对象。

点击 Add Component 并选择 Ridigbody


更短的解释(代码)

就这么简单的一行代码:

myGameObject.AddComponent<Rigidbody>();


克隆对象

for-loop 中实例化 GameObjects 并向其添加 Rigidbody 的示例。

Rigidbody currentRb;
for(int i = 0; i < 10; i++)
{
    GameObject clone = (GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity);
    currentRb = clone.AddComponent<Rigidbody>();
    // You can even access the rigidbody with no effort
    currentRb.detectCollisions = true;
}

附加到 MonoBehavoir

您的 MonoBehavior 对象有一个名为 RequireComponent() 的属性。

复制自 documentation,此附件将为每个对象添加刚体组件。

// The GameObject requires a Rigidbody component
[RequireComponent (typeof (Rigidbody))]
public class PlayerScript : MonoBehaviour {
    Rigidbody rb;

    void Start() {
        rb = GetComponent<Rigidbody>();
    }
    void FixedUpdate()  {
        rb.AddForce(Vector3.up);
    }
}