2D 플레이어 점프 구현

6484 단어 유니티유니티

플레이어의 점프를 구현해보자

에셋은 골드메탈 에셋을 사용했다.

void Update()
    {
        //Jump 할 수 있는지 없는지 
        jumpCheck();


    }

먼저 Update문에서 jumpCheck함수를 돌린다.

void jumpCheck()
    {
        if (Input.GetButtonDown("Jump") && jumpCount < jumpCountMax)
        {
            jump();
           
        }
        if (isGround && jumpCount >= jumpCountMax)
            jumpCount = 0;
    }

jumpCount 변수를 이용해서(값 2) 2단 점프 이상은 하지 못하게 막을 것 이다.

void GroundCheak()
    {
        RaycastHit2D rayhit = Physics2D.Raycast(rigid.position, Vector2.down, 1, LayerMask.GetMask("Platform"));
        if (rayhit.collider != null)
        {
            isGround = true;
        }
        else
        {
            isGround = false;
        }
    }

Raycast로 땅 체크

public void jump()
    {
        if (rigid.velocity.y < maxForce) //y속도가 최대 속도보다 적을 때
        {
            rigid.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse); //위로 jumpForce만큼 힘을 준다
        }
        else //그렇지 않을 때
        {
            //y속도를 maxForce(최대 속도)만큼만 준다.
            rigid.velocity = new Vector2(rigid.velocity.x,maxForce); //y속도를 maxForce(최대 속도)만큼만 준다.
        }
        jumpCount++;
    }

AddForce 특성상

힘을 가하면 계속 쭉쭉쭉쭉 가해지기 때문에 중간에 진정(?) 시키지 않으면 총알보다 빠른 속도로 슝 지붕 킥 할 수 있다. 이를 막기 위해서 최대 속도(maxForce)를 정해주어야한다.
maxForce보다 y축의 속도가 작을 때만 힘을 가해주고, 크다면 무조건 속도는 최대 속도만 가해주면 됀다.

좋은 웹페이지 즐겨찾기