반응형

이번시간에는 게임을 빌드 시켜 안드로이드 게임앱을 만들고 Player 에 터치 드레그 프로그램을 짜 보겠습니다


먼저 안드로이드 앱을 빌드하기위해선 

안드로디드 스튜디오의 SDK Manager 와 자바 프로그램에 Jdk 가 필요 합니다.

두 프로그램을 다운받아 설치하고 그림과 같이 

Edit ->Preferences -> External Tools  로 가서 연결합니다

자바프로그램은 꼭 환경변수 설정을 하셔야 됩니다 

자바 환경변수 설정은 인터넷에 많이 나오니 참고 하시면 됩니다 



그리고 각각 Sprite Renderer가 있는 오브젝트에 Sorting Layer를 붙힙니다

PC에서는 텍스쳐는 만든 순서 대로 해서 보이겠지만  스마트 기기에 들어가면 Layer 지정이 안되 있어 화면에 텍스쳐가 가릴지도 모릅니다 



그림과 같이 Sorting Layers를 만듭니다

 아래로 내려갈수록 텍스쳐 Layer가 위로 보이게 하는 것입니다


Player오브젝트를 선택하고 Sorting Layer를 Player로 합니다





Enemy 프리팹을 선택하여 Sorting Layer 를 Enemy 로 합니다


Explosion 프리팹을 선택하여 Sorting Layer effect 로 합니다


rocket 프리팹을 선택하여 Sorting Layer 를 Rocket로 합니다



스크립트를 생성하고 이름을 DragScript 라고 합니다


Player 에 연결하여 스마트 폰에서 손가락으로 touch 하고 drag 할수 있는 스크립트를 짭니다 



DragScript


using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class DragScript : MonoBehaviour

{

    float deltaX, deltaY;


    Rigidbody2D rb;


    bool moveAllowed = false;


// Use this for initialization

void Start ()

    {

        rb = GetComponent<Rigidbody2D>();


        PhysicsMaterial2D mat = new PhysicsMaterial2D();

        mat.bounciness = 0.75f;

        mat.friction = 0.4f;

        GetComponent<CircleCollider2D>().sharedMaterial = mat;

}

// Update is called once per frame

void Update ()

    {

        if (Input.touchCount > 0)

        {

            Touch touch = Input.GetTouch(0);


            Vector2 touchPos = Camera.main.ScreenToWorldPoint(touch.position);


            switch (touch.phase)

            {

                case TouchPhase.Began:


                    if (GetComponent<Collider2D>() == Physics2D.OverlapPoint(touchPos))

                    {

                        deltaX = touchPos.x - transform.position.x;

                        deltaY = touchPos.y - transform.position.y;


                        moveAllowed = true;


                        rb.freezeRotation = true;

                        rb.velocity = new Vector2(0, 0);


                        rb.gravityScale = 0;


                        GetComponent<CircleCollider2D>().sharedMaterial = null;

                    }

                    break;

                case TouchPhase.Moved:

                    if (GetComponent<Collider2D>()== 

                        Physics2D.OverlapPoint(touchPos)&& moveAllowed)

                    {                                                    

                        rb.MovePosition(new Vector2(touchPos.x - deltaX, touchPos.y - deltaY));

                    }                                                                       //Player를 좌우로만 움직일경우  touchPos.y - deltaY 대신에  transform.position.y 을 넣는다

                    break;


                case TouchPhase.Ended:


                    moveAllowed = false;

                    rb.freezeRotation = false;

                    rb.gravityScale = 2;


                    PhysicsMaterial2D mat = new PhysicsMaterial2D();

                    mat.bounciness = 0.75f;

                    mat.friction = 0.4f;

                    GetComponent<CircleCollider2D>().sharedMaterial = mat;

                    break;                   

            }


        }

}

}







DragScript를 Player 전투기에 붙힙니다




File -> Build Settings 를 엽니다



Android를 선택하고 Switch Platform을 클릭합니다


Game 씬을 드래그하여 Snenes In Build 에 집어 넣습니다






Player Settings 를 눌러 인스팩터 값을 수정합니다


Default Icon을 게임에 적합한 그림을 찾아 넣습니다 되도록 정사각형의 그림을 찾아넣고 Resolution and Presentation 에 그림과 같이 Landscape Right 와 Landscape Left를 체크 해제합니다







Other Settings 로 들어가서 Package Name을 변경합니다 


설정이 끝나면 빌드를 눌러 압축 APK 파일이 생성되도록합니다


생성한 압축파일 아이콘이 각자에 압축프로그램에 따라 다를수 있습니다

저는 참고로 반디집을 깔아서 저렇게 나오네요 ㅎㅎ


각자 안드로이드 휴대폰에 파일을 넣고 실행시킵니다











프로젝트파일 다운로드 





반응형

+ Recent posts