统一的刚体2D问题
Problems with rigidbody2D in unity
老实说,我不知道这段代码有什么问题。我想我还是 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;
}
程序启动时,重力比例还是1,isKinematic还是false。为什么?
我建议你创建一个预制件然后实例化它。与您正在执行的操作相比,创建新对象是一种更好的方法。转到统一文档并检查其参数。
另一个答案是正确的。当你有一个复杂的对象时,你应该使用预制件并实例化它。我将解释为什么您拥有的代码也不起作用。你的错误在行
rigid = GetComponent<Rigidbody2D>();
这将获取当前脚本附加到的 GameObject
的 rigidBody2D
。我猜你的意思是:
rigid = objToSpawn.GetComponent<Rigidbody2D>();
这将获取您刚刚实例化的对象上的 rigidBody2D
,称为 objToSpawn
。
老实说,我不知道这段代码有什么问题。我想我还是 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;
}
程序启动时,重力比例还是1,isKinematic还是false。为什么?
我建议你创建一个预制件然后实例化它。与您正在执行的操作相比,创建新对象是一种更好的方法。转到统一文档并检查其参数。
另一个答案是正确的。当你有一个复杂的对象时,你应该使用预制件并实例化它。我将解释为什么您拥有的代码也不起作用。你的错误在行
rigid = GetComponent<Rigidbody2D>();
这将获取当前脚本附加到的 GameObject
的 rigidBody2D
。我猜你的意思是:
rigid = objToSpawn.GetComponent<Rigidbody2D>();
这将获取您刚刚实例化的对象上的 rigidBody2D
,称为 objToSpawn
。