Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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# 刚体OnTiggerEnter给我一个错误_C#_Unity3d - Fatal编程技术网

C# 刚体OnTiggerEnter给我一个错误

C# 刚体OnTiggerEnter给我一个错误,c#,unity3d,C#,Unity3d,所以,我试图做无限跳转,但出于某种原因,在OnTriggerEnter2D函数rb2D给了我一个错误,即使我做了一切让它工作(至少我认为是这样,因为每次我这样做它都能工作。)错误在哪里,或者我在代码中遗漏了什么 public class PlayerMovement : MonoBehaviour { Rigidbody2D rb2D; void Start() { rb2D = GetComponent<Rigidbody2D>(); } void Update()

所以,我试图做无限跳转,但出于某种原因,在
OnTriggerEnter2D
函数
rb2D
给了我一个错误,即使我做了一切让它工作(至少我认为是这样,因为每次我这样做它都能工作。)错误在哪里,或者我在代码中遗漏了什么

public class PlayerMovement : MonoBehaviour {

Rigidbody2D rb2D;

void Start()
{
    rb2D = GetComponent<Rigidbody2D>();
}

void Update()
{

}
void OnTriggerEnter2D(Collider2D other)
{
    other.rb2D.velocity = Vector2.zero;
    other.rb2D.AddForce(Vector2.up * jumpHeight, ForceMode2D.Impulse);
}
公共类玩家移动:单一行为{
刚体2d rb2D;
void Start()
{
rb2D=GetComponent();
}
无效更新()
{
}
无效OnTiggerEnter2D(碰撞的R2D其他)
{
other.rb2D.velocity=Vector2.0;
其他.rb2D.AddForce(Vector2.up*跳跃高度,ForceMode2D.pulse);
}

这可能是因为您的
其他
上没有rb2D组件,只有您的游戏对象附加了此脚本

other
是一种
collectedr2d
类型,它不包含您的刚体定义
rb2d

我认为您的代码应该是:

other.velocity = Vector2.zero;
other.AddForce(Vector2.up * jumpHeight, ForceMode2D.Impulse);`

注意-我不认为
velocity
CollizedR2D
的一部分-查看文档。

错误:键入
UnityEngine。CollizedR2D
不包含
rb2D
的定义,并且找不到类型
UnityEngine.CollizedR2D
的扩展方法(您是否缺少using指令或程序集引用?)我刚意识到你可能想改变你的答案,因为对撞机不知道速度。你需要先抓住刚体。@Tadas抓住other->rigidbody2d=other.GetComponent()的刚体组件;并继续努力this@Tadas这个函数得到了一个碰撞器组件,但是碰撞器不是刚体,不知道速度。最初的错误是因为你期望碰撞器(一个默认的统一类)有一个名为rb2D的字段,但它没有(这也是错误所说的)。您希望它包含的字段位于您自己创建的类/组件上,名为PlayerMovement。这是否清除了它?如果没有,请继续询问我^^