Unity3d-跳入碰撞功能

时间:2019-04-23 12:00:14

标签: unity3d game-development

我只希望角色站在地面上时跳起来。尽管我编写了碰撞函数,但是当我按下该键时他不会跳。有什么问题吗?

appService

2 个答案:

答案 0 :(得分:1)

仅当您输入地面触发器(您正在实现的功能为OnCollisionEnter2D)时,您才触发动作。仅当您在对撞机与groundTag对象碰撞的同一帧上按下空格键时,您的功能才起作用。

您可以尝试使用OnCollisionStay2D或使用CharacterController;应该可以更轻松地实现角色。

答案 1 :(得分:1)

OnCollisionEnter2D仅在与地面(单个框架)碰撞时运行。可能您需要为此情况创建一个布尔值。这可能不是最佳选择。当它与地面碰撞时,使其为真;当其与地面碰撞时,其为假。然后在更新函数中编写代码。

    bool _canJump;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        rb2d.AddForce(new Vector2(rb2d.velocity.x, Jumpforce));
    }
}
void OnCollisionEnter2D(Collision2D col)
{

    if (col.collider.tag == "groundTag")
    {
        _canJump = true;
    }

}

void OnCollisionExit2D(Collision2D col)
{
    if (col.collider.tag == "groundTag")
    {
        _canJump = true;
    }

}