所以,我试图做无限跳线但由于某种原因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);
}
答案 0 :(得分:3)
可能是因为您的other
上没有rb2D组件,只有您附加此脚本的游戏对象。
other
是Collider2D
类型, 不 包含 您的 刚体定义rb2d
我相信你的代码应该是:
other.velocity = Vector2.zero;
other.AddForce(Vector2.up * jumpHeight, ForceMode2D.Impulse);`
注意 - 我认为velocity
不属于Collider2D
的一部分 - 请查看文档here。