(这是2D项目)
我的角色需要左右奔跑并跳上地面。这是我第一次体验Unity及其最新版本,我设法使我的角色在改变方向时左右移动并翻转,但是根本不会跳动。
对于角色,我目前正在使用2 Box Collider 2D和Rigidbody 2D。角色的质量等于1。
地面,我目前正在使用2个Box Collider 2D。地面是单个精灵,它覆盖屏幕的底部。
下面是我当前尝试使用的跳跃和停飞代码。
'''
{
public float maxSpeed = 10f;
public float jumpVelocity = 10f;
private bool isGrounded;
private float move = 0f;
private Rigidbody2D rb2d; //Store a reference to the Rigidbody2D component required to use 2D Physics.
private SpriteRenderer sprt_render;
// Start is called before the first frame update
void Start()
{
rb2d = GetComponent<Rigidbody2D>();
isGrounded = true;
}
// Update is called once per frame
void Update()
{
GetInput();
}
private void GetInput()
{
move = Input.GetAxis("Horizontal");
if (transform.position.x > -6.2 && transform.position.x < 5.7)
{
rb2d.velocity = new Vector2(move * maxSpeed, rb2d.velocity.y);
}
else
{
rb2d.velocity = new Vector2(move * maxSpeed * -1, rb2d.velocity.y);
}
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
{
Debug.Log("Jump");
rb2d.velocity = new Vector2(rb2d.velocity.x, jumpVelocity);
isGrounded = false;
//rb2d.AddForce(Vector2.up * jumpVelocity, ForceMode2D.Impulse);
}
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = true;
}
}
}
'''
如您所见,我尝试使用两种不同的方法结合使用Velocity实现跳转,并且使用AddForce结果完全相同,即使是第一次也没有跳转。我检查过断点,它肯定会通过跳跃代码,但是什么也没发生。