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
'유니티 > 간단한 게임' 카테고리의 다른 글
간단한게임만들기 #7(점프애니메이션과 로비 추가) (0) | 2023.06.21 |
---|---|
간단한 게임만들기#6(애니메이션 임포트) (0) | 2023.06.21 |
간단한 게임만들기#4(UI 구축) (1) | 2023.05.29 |
간단한 게임만들기 #3(캐릭터 플레이) (0) | 2023.05.27 |
간단한 게임만들기#2(에셋과 카메라 설정) (0) | 2023.05.27 |
댓글