C# 统一中的刚体2d问题

C# 统一中的刚体2d问题,c#,unity3d,rigid-bodies,C#,Unity3d,Rigid Bodies,我真的不知道这个代码有什么问题。我想我还是unity的新手,希望能得到一些帮助 void Start() { GameObject objToSpawn; objToSpawn = new GameObject("Obstacle"); objToSpawn.AddComponent<Rigidbody2D>(); objToSpawn.AddComponent<BoxCollider2D>(); objToSpawn.AddCom

我真的不知道这个代码有什么问题。我想我还是unity的新手,希望能得到一些帮助

void Start()
{
    GameObject objToSpawn;
    objToSpawn = new GameObject("Obstacle");
    objToSpawn.AddComponent<Rigidbody2D>();
    objToSpawn.AddComponent<BoxCollider2D>();
    objToSpawn.AddComponent<SpriteRenderer>();
    Rigidbody2D rigid;
    rigid = GetComponent<Rigidbody2D>();
    rigid.gravityScale = 0;
    rigid.isKinematic = true;
    pos = objToSpawn.transform.position;


}
void Start()
{
配子体倒刺;
objToSpawn=新游戏对象(“障碍”);
objToSpawn.AddComponent();
objToSpawn.AddComponent();
objToSpawn.AddComponent();
刚体2d刚性;
刚性=GetComponent();
刚性.重力标度=0;
刚性.iskinetic=true;
pos=objToSpawn.transform.position;
}

程序启动时,“重力比例”仍然为1,“IsKinetic”仍然为false。为什么?

我建议您创建一个预置,然后实例化它。这将是一个更好的方式来创建一个新的对象比你正在做的。转到unity文档并检查其参数

我建议您创建一个预置,然后实例化它。这将是一个更好的方式来创建一个新的对象比你正在做的。转到unity文档并检查其参数

另一个答案是正确的。当您有一个复杂的对象时,您应该使用一个预置并实例化它。我会解释为什么你的代码也不起作用。你的错误在所难免

rigid = GetComponent<Rigidbody2D>();

这将得到您刚才实例化的对象上的
rigidBody2D
,该对象名为
objToSpawn

,另一个答案是正确的。当您有一个复杂的对象时,您应该使用一个预置并实例化它。我会解释为什么你的代码也不起作用。你的错误在所难免

rigid = GetComponent<Rigidbody2D>();

这将获得您刚刚实例化的对象上的
rigidBody2D
,该对象名为
objToSpawn

,您是否试图修改
objToSpawn
上的
rigidBody2D
,或者此脚本附加到的对象?您是否碰巧有一个
Update
FixedUpdate
来修改这些对象?您是否正在尝试修改
objToSpawn
上的
rigiidody2d
,或者此脚本附加到的对象?您是否碰巧有一个
更新
修复更新
来修改它们?没问题。请随意提问,但如果您的问题更面向游戏,请尝试使用游戏开发板。没问题。请随意提问,但如果您的问题更面向游戏,请尝试使用游戏开发板。