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。这是否清除了它?如果没有,请继续询问我^^