Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “游戏对象”不包含“AddForce”| | Unity3D”的定义_C#_Unity3d - Fatal编程技术网

C# “游戏对象”不包含“AddForce”| | Unity3D”的定义

C# “游戏对象”不包含“AddForce”| | Unity3D”的定义,c#,unity3d,C#,Unity3d,我有一个错误: 'GameObject' does not contain a definition for 'AddForce' and no accessible extension method 'AddForce' accepting a first argument of type 'GameObject' could be found (are you missing a using directive or an assembly reference?) 代码: 我希望在与其他对

我有一个错误:

'GameObject' does not contain a definition for 'AddForce' and no accessible extension method
'AddForce' accepting a first argument of type 'GameObject' could be found (are you missing a using directive or an assembly reference?)
代码:


我希望在与其他对象发生碰撞时更改当前对象的坐标

根据你所尝试的,我假设你正在尝试向与之碰撞的物体添加力

首先,你做到了:

if (myCollision.gameObject.name == "Cube")
  {
    var = GameObject.Find("Cube");
    var.AddForce(new Vector3(0.0f, 0.0f, power));
  }
尽量避免GameObject.Findstring方法,因为这是一个昂贵的调用。 事实上,你甚至不需要这样做,因为你实际上已经有了你正在碰撞的游戏对象,这就是myCollision的目的

您可以这样做:

if (myCollision.gameObject.name == "Cube")
  {
    var = myCollision.gameObject; // Aka the gameobject you have collided with.
    var.AddForce(new Vector3(0.0f, 0.0f, power));
  }
回到问题上来,你要做的是给刚体添加力,但是var属于GameObject类型,而不是刚体

您需要做的是从GameObject获取刚体的组件,如下所示:

var.GetComponent<Rigidbody>().AddForce(...
请注意,如果游戏对象没有连接刚体组件,则会发生空引用异常。 确保正在碰撞的立方体在Unity的检查器中有刚体组件。
另外,您可能需要注意重复的GetComponent调用可能会很昂贵。如果可能的话,你可以考虑缓存它。

谢谢你的回答。我有下一个字符串:Cube.GetComponent.addforcenewvector30.0f,0.0f,power;通过控制台中的冲突,我遇到了下一个错误:NullReferenceException:对象引用未设置为对象的实例。立方体有刚体。所有代码:@bass\u devware注意,您从未分配多维数据集;做一个立方体=myCollision.gameObject;在增加力量之前。或者您可以用myCollision.gameObject替换多维数据集
var.GetComponent<Rigidbody>().AddForce(...