본문 바로가기
유니티/간단한 게임

간단한 게임만들기#5(안드로이드 셋팅)

by 오늘의논리 2023. 5. 29.
728x90
지금까지 만든 게임을 안드로이드로 빌드해보려고 한다.

 

  • File - Build Settings - Android 선택 Switch Platform 클릭한다.
  • 게임 창을 모바일에서 가장 많은 해상도인 2560*1440 Landscape 변경해준다. Landscape 가로 Portrait 세로이다.

 

  • 에셋 스토어에서 JoyStick 무료 에셋을 다운하고 프로젝트에 Import 한다.
  • Example 폴더의 Example Scene 열고 Variable Joystick 스크립트를 연다.

 

  • 내용을 보면 우리가 아는 것들이다. 일단 MyGame 신을 복사해서 MyGame_Android 하나더 만들어주고 Example Scene Variable Joystick 오브젝트를 복사해서  MyGame_Android - Canvas 붙여넣어준다.
  • 그럼 Joystick 보이게 되는데 실행해서 움직여 보면 움직이지만 Player 움직이지 않는다. 그래서 코드로 연결을 시켜줄건데 위에

public VariableJoystick variableJoystick; 이부분과

        Vector3 direction = Vector3.forward * variableJoystick.Vertical + Vector3.right * variableJoystick.Horizontal;

        rb.AddForce(direction * speed * Time.fixedDeltaTime, ForceMode.VelocityChange);

부분을 MyGame_Andriod Player C# Script 적용시켜보겠다.

public VariableJoystick variableJoystick; 이부분을 상단에 선언을 하고 FixedUpdate 나머지 내용을 작성한다.

 

void FixedUpdate()
{
    Vector3 direction = Vector3.forward * variableJoystick.Vertical + Vector3.right * variableJoystick.Horizontal;
    rb.AddForce(direction * speed * Time.fixedDeltaTime, ForceMode.VelocityChange);

//스페이스바가 눌리고 점프가 가능하면 점프한다.

    if (Input.GetKey(KeyCode.Space) && isJump)
    {
        rb.AddForce(Vector3.up * 5, ForceMode.Impulse);
        isJump = false;
    }
}

 

  • 그러고 다시 유니티의 Player Inspector- Variable Joystick 아까 가져온 캔버스의 조이스틱으로 지정해 준다.
  • 여기까지 했다면 조이스틱으로 Player 움직이는것이 확인된다. 그런데 Android에서는 스페이스바가 없으니 스페이스바 버튼을 대체할 점프 버튼을 만들어 주겠다.
  • Canvas-UI-Button 클릭해 버튼을 생성하고 앵커를 우측하단에 지정해주고  크기는 300X300정도로 지정해 준다. PosX -100, PosY 100 정도로 조이스틱과 대칭되게 위치시켜준다. 그리고 Source Image AllAxis_Plain으로 원형모양으로 지정해준다.

 

  • 그리고 버튼 내부의 Text Jump 수정해주고 Font, Size 등을 설정해준다.
  • 그리고 Player Script
public void Jump_On()
{
    if(isJump)
    {
        rb.AddForce(Vector3.up * 5, ForceMode.Impulse);
        isJump = false;
    }

}

이렇게 Jump_On이라는함수를만들어주고 점프기능을 넣는다. 이후 Jump 버튼 OnClick 에서 만든 함수를 지정해 준다.

 

  • 이제 공이 점프하다가 바깥으로 나갔을때 공이 다시 중앙으로 돌아오도록 해볼텐데 공이 하단의 바닥에 부딛히면 원위치 시키는 방법을 사용할 것이다. 먼저 맵에 3D object - plane 을하나 만들어주고 위치를 posY -7, scale 모두 3정도로 해서 맵의 아래에 깔아준다. 그리고 바닥 plane ReGame이라는 태그를 생성해서 붙여준다.

 

  • 다시 공이 생성될 위치에 cube 하나 만들어서 놓고 Box collider Mesh Renderer 체크해제 해준다.
  • 그리고 Player스크립트에서 아래내용을 추가해준다.
public GameObject regame_point; //변수추가

private void OnCollisionEnter(Collision collision)//ReGame tag충돌시 Regame_On함수실행
{
    if (collision.gameObject.tag == "Floor")
    {
        isJump = true;
    }

    if (collision.gameObject.tag == "ReGame")
    {
        Regame_On();
    }
}

public void Regame_On()//위치를 regame이라는 오브젝트의 위치로 변경
{
    transform.position = regame_point.transform.position;
}

 

  • 이제 모바일에 맞춰 Ui 조금만 수정해줄건데 에셋스토어에서 2d casual UI HD 다운받고 임포트 한뒤 로비 신에서 버튼을 선택한 Source Image - Select sprite - GUI12번을 선택해주자. 이때 이미지를 선택할때 비율이 맞게 해주는것이 중요하다. 다른이미지는 깨질 있다.

  • 이후에 점수판이라던지 남은 코인갯수등도 이렇게 바꿔주면 된다.
  • 파일 build settings - player settings 들어가서 아이콘 지정 Resolution and Pressentation - Orientation Landscape Left 지정해준다. 이유는 이게임은 회전을 이유가 없어서 왼쪽방향으로 고정 하려 함이다.

 

  • 이후 빌드를 눌러 게임을 빌드해서 apk 파일을 만들어준다.

 

  • 파일을 카톡이든 이메일이든 유선이든 안드로이드 폰으로 옴겨 실행해본다.\
 

 

728x90

댓글