점프 설정하는 방법은 

 

Update 함수에 아래 코드를 추가해 주면 된다.

        //Jump
        if (Input.GetButton("Jump"))
        {
            rigid.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);
        }

그럼 Player Move 스크립트 inpector에서 Jump Power를 설정할 수 있는 칸이 생긴다.

 

이 때 내려오는 속도가 너무 느리다면 Rigidbody 2D에서 Gravity 값을 조절해도 되고

Edit -> Project setting 에서 gravity Y값을 변경해도 된다.

 

애니메이션은 동일하게 만들고 다만 점프는 반복하면 안되기 때문에 loop time 옵션은 체크 해제해준다.

 

RayCast : 오브젝트 검색을 위해 Ray를 쏘는 방식

Debug.DrawRay() : 오브젝트에서 Ray를 쏘는 함수

RayCastHit : Ray에 닿은 오브젝트

RayCastHit의 콜라이더 변수로 검색 확인 가능

 

Layer Mask : 물리 효과를 구분하는 정수

 

레이캐스트 부분 복습 필요..

영상과 좀 다른 부분도 있고 이해안가는 부분도 있다.

 

        //Landing Platform
        if(rigid.velocity.y < 0) // y축 속도가 음수인 경우 = 점프하고 내려오는 순간
        {
            Debug.DrawRay(rigid.position, Vector3.down, new Color(0, 1, 0)); //레이를 그린다.
            //현재 포지션에서 LayerMask Platform을 검색한다.
            RaycastHit2D rayHit = Physics2D.Raycast(rigid.position,
                                                    Vector3.down, 1,
                                                    LayerMask.GetMask("Platform"));
            //rayHit에 충돌이 있는 경우
            if (rayHit.collider != null)
            {
                //충돌한 오브젝트와의 거리가 0.5 이하인 경우
                if (rayHit.distance < 0.5f)
                {
                    //Debug.Log(rayHit.collider.name);
                    //isJumping을 false로 setting
                    anim.SetBool("isJumping", false);
                }
            }
        }

 

이동하다가 점프를 한 상태에서 이동키를 떼지 않는 경우 점프 state에서 idle로 넘어가지 않는다.

아직 원인은 모르겠다. 추후 확인해서 업데이트해봐야겠다.

+ Recent posts