chyam

[unity]-2d 기초 [중력, raycast,타일맵] 본문

unity

[unity]-2d 기초 [중력, raycast,타일맵]

chyam_eun 2024. 6. 26. 10:41

>점프할때 떨어지는 속도 조정

1번째 방법은 gravity scale을 조정하는것이다. 이는 오브젝트에 적용되는 중력 비율이다.

rigidbody에 있다. 1이면 100퍼센트를 뜻한다. 

 

2번째 방법은 스크립트에서 조정하는것이다. 

if (Input.GetButtonDown("Jump") && !anim.GetBool("isJumping")) {  //더블점프 못하게하기
            rigid.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);
            anim.SetBool("isJumping", true);
        }

-&&뒤에는 더블점프를 방지하기 위한 것이다. 점프 상태가 아닐때 Jump버튼을 누르면 실행된다.

jumpPower이라는 값을 조정하여 높이를 조정할수있다. 점프할때는 isJumping이 true가 되도록 설정한다. 

 

>RayCast - 오브젝트 검색을 위해 광선을 쏘는 방식이다.

위 사진을 보면 아래쪽으로 연두색 줄이 보인다. 이것이 광선을 밑으로 쏜것이다. 기준점은 캐릭터의 중심이다.

if (rigid.velocity.y < 0) //아래로 내려갈때만
        {
            Debug.DrawRay(rigid.position, Vector3.down, new Color(0, 1, 0));
            //LayMask 통해서 어느 위치에 서있는지 알수있다
            RaycastHit2D rayHit = Physics2D.Raycast(rigid.position, Vector3.down, 1, LayerMask.GetMask("Flatform"));
            //바닥으로 광선을 쏴서 있는지 없는지 확인한다
            if (rayHit.collider != null)
            {
                //절반이하가 닿으면
                if (rayHit.distance < 0.5f)
                {
                    //Debug.Log(rayHit.collider.name);
                    anim.SetBool("isJumping", false);
                }
            }

코드를 보면 먼저 if 조건이 y축이 0이하이므로 아래로 내려갈때만 적용되는것이다. 

DrawRay는 에디터 상에서만 Ray를 그려주는 함수이다. 게임화면에서는 안나타난다.

원래 Platform이라 써야하는데 Flatform이라 썼다..

RayCastHit은 Ray에 닿은 오브젝트를 말한다. 

LayerMask는 물리 효과를 구분하는 정수값이다. "Flatform"은 레이어 이름이다. 

레이어는 다른 레이어끼리 부딪히지 않게 설정한다.

ray에 닿은 오브젝트가 있을때 캐릭터의 중심에서 닿은 오브젝트의 거리가 0.5미만일때 isJumping상태를 거짓으로 바꿔버린다. 

 

>타일맵

먼저 우클릭해서 2d object- tilemap-rectangular를 만들어준다.

생긴 타일맵에 tilemap collider2d 를 만들어준다. 

material에는 전에 만들었던 physics material 2d를 넣어준다. 마찰력을 0으로 해주어야한다.

 

window-2d-tilemap palette 로 들어가서 create New palette로 생성해준다. 

그리고 나서 sprite(이미지) 를 끌여다가 놓는다.

오른쪽의 연필을 누르면 이 안에서 선택한것을 화면에 끌여다 놓을수있다.

위의 툴바를 통해서 지울수도있고 여러개 선택할수도있다.

아래쪽에 경사로가 있는데 collider가 정확히 안되어있으면 캐릭터가 이동키로만 올라가지 못한다. 이를 수정하려면 sprite editor에 들어가야한다.

custom physics shape를 누른다.

경사로 하나 이미지를 누르면 위에 generate를 눌러준다.

누르면 범위가 조금 더 크게 잡히는것이 보인다.

저 제어점?들을 움직여서 맞추어준다.

apply를 누르고 실행시켜주면 캐릭터가 이동키만으로 올라갈수있다.

 

>메인카메라가 캐릭터를 따라가도록하는방법

메인카메라를 캐릭터 아래에 집어넣으면 된다. 위치에서 z축은 건들이면 안된다.