【问题标题】:Problems with rigidbody2D in unity统一刚体2D的问题
【发布时间】:2016-05-12 17:25:21
【问题描述】:

老实说,我无法弄清楚这段代码有什么问题。我想我还是个新人,很想得到一些帮助。

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;


}

程序启动时,重力比例仍为 1,isKinematic 仍为 false。为什么?

【问题讨论】:

  • 您是要修改objToSpawn 上的Rigidbody2D,还是该脚本附加到的对象?
  • 你不是碰巧有一个 UpdateFixedUpdate 来修改这些吗?

标签: c# unity3d rigid-bodies


【解决方案1】:

另一个答案是正确的。当你有一个复杂的对象时,你应该使用一个预制件并实例化它。我会解释为什么你的代码也不起作用。你的错误就在这条线上

rigid = GetComponent<Rigidbody2D>();

这将获得当前脚本附加到的GameObject 中的rigidBody2D。我猜你的意思是:

rigid = objToSpawn.GetComponent<Rigidbody2D>();

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

【讨论】:

    【解决方案2】:

    我建议您创建一个预制件然后实例化它。这将是一种比您正在做的更好的创建新对象的方法。转到统一文档并检查其参数。

    【讨论】:

    • 没问题。随意提问,但如果您的问题更面向游戏,请尝试使用游戏开发板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    相关资源
    最近更新 更多