Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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
Unity3d-碰撞中的跳转功能_Unity3d_Game Development - Fatal编程技术网

Unity3d-碰撞中的跳转功能

Unity3d-碰撞中的跳转功能,unity3d,game-development,Unity3d,Game Development,我希望我的角色只有站在地上时才能跳。尽管我写了碰撞函数,但当我按键时,他并没有跳。有什么问题 void OnCollisionEnter2D(Collision2D col) { if (col.collider.tag == "groundTag") { if (Input.GetKeyDown(KeyCode.Space)) { rb2d.AddForce(new Vector2(rb2d.velocity.x, Jum

我希望我的角色只有站在地上时才能跳。尽管我写了碰撞函数,但当我按键时,他并没有跳。有什么问题

void OnCollisionEnter2D(Collision2D col)
{
    if (col.collider.tag == "groundTag")
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            rb2d.AddForce(new Vector2(rb2d.velocity.x, Jumpforce));
        }
    }

只有当您输入地面触发器时,您才触发您的操作(您正在执行的功能是
OnCollisionInter2d
)。只有在碰撞器与
groundTag
对象碰撞的同一帧上按空格键时,此功能才起作用


您可以尝试使用
OnCollisionStay2D
或使用;这将使字符的实现变得更容易。

只有在输入地面触发器时才触发操作(您要实现的功能是
OnCollisionInter2d
)。只有在碰撞器与
groundTag
对象碰撞的同一帧上按空格键时,此功能才起作用


您可以尝试使用
OnCollisionStay2D
或使用;这将使角色的实现更加容易。

OnCollisionInter2d仅在与地面碰撞(单帧)时运行。可能你需要为这种情况创建一个bool。这可能不是最好的选择。当它与地面碰撞时使其为真,当它离开地面时使其为假。然后在更新函数中编写代码

    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;
    }

}

OnCollisionInter2D仅在与地面碰撞时运行(单帧)。可能你需要为这种情况创建一个bool。这可能不是最好的选择。当它与地面碰撞时使其为真,当它离开地面时使其为假。然后在更新函数中编写代码

    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;
    }

}