Unity2d 像瞬移一样跳跃

pav*_*mar 1 unity-game-engine unityscript

我正在开发 Unity2d Sprite,但出了点问题:在我的代码中,当我按下跳跃按钮时,我的角色会像传送一样跳跃,它向上方向移动得非常快。重力为 9,我的Rigidbody2D质量为 1。我的代码是这样的:

if(isGrounded == true && moveH == 0) {

    if (Input.GetKeyDown(KeyCode.J)) {

        anim.SetBool("str_jump", true);
        //rgBody.velocity = new Vector2(0,jumpHeight);                
        //rgBody.AddForce(Vector2.up * jumpHeight);                
        transform.position = new Vector2(transform.position.x,
                                         transform.position.y * jumpHeight);
        isGrounded = false;

    }

}
Run Code Online (Sandbox Code Playgroud)

Pro*_*mer 5

如果你的跳跃太高,你必须使用一个变量来修改跳跃的高度。在您的例子中,您使用jumpHeight作为变量来修改跳跃的高度。

减少jumpHeight应该可以解决你的问题。请注意,如果jumpHeight声明为 public ( public float jumpHeight;),则必须从编辑器或函数中更改变量,因为它不会使用声明时分配给它的编号。它将使用编辑器分配给它的任何内容。

例如,当您在编辑器中将public float jumpHeight = 4;值设置为 but时,将用作值 not 。004

另外你还必须使用rgBody.AddForce(Vector2.up * jumpHeight);. 取消注释,然后删除该transform.position = new Vector2(transform.position.x,transform.position.y *jumpHeight);代码行。

如果这不能解决您的问题,那么您必须使用完整的代码更新您的问题。