Sign In

게임 개발

유니티 - 플래피 버드 클론
게임을 모바일에서 실행하는 방법은 위처럼 두가지 경우가 있음.
빌드 번호를 10번 탭하면 개발자 모드를 켰다고 나옴. >>> 설정 맨 처음으로 돌아가서 개발자 옵션 클릭
활성화 후 usb 연결을 함.
샘플 신을 드래그 해서 assets 안에 씬 폴더에 넣음.
파일 >> 디바이스 >> 빌드 세팅 >> 안드로이드 클릭
안드로이드 유에스비 드라이버 클릭하여 설치 파일을 받아줌.
휴대폰에 접근 허용 메시지가 뜸.
usb 디버깅 허용.
빌드 앤 런을 클릭하면 apk 파일 저장 위치가 뜸.
아무때나 저장함 (바탕화면 가능함)
스마트폰에 앱이 깔리고 실행됨.
이를 윈도우에 하면 컴퓨터에서 실행 가능함.
빌드 앤 런이 아니라 빌드만 눌러서 컴퓨터에 저장한 담에 apk 파일을 이메일로 보내도 가능함.
깨지지 않게 하려면 쉬프트를 누르고 늘리면 됨.
컨트롤 c v를 하여 기둥을 하나 더 복사해서 붙여넣고, 이를 shift키 누르고 위로 올리면 벗어나지 않고 올라감.
오른쪽에서 rotation에 z 축에 180을 입력하면 기둥이 돌아감.
두개의 파이프를 하나로 묶어주기 위해서 왼쪽 Hierarchy에서 빈 창을 만들어주고 pipe라고 이름을 붙여줌.
위처럼 만들어줌
이제 pipe를 선택한 뒤,포지션에 마우스 커서를 두고 물체를 움직이면 같이 움직여짐.
이렇게 애니메이션은 아래쪽 우측에서 크리에이트를 눌러야 가능함.
위처럼 코드를 작성해서 왼쪽으로 움직이도록 함.
그 다음에 capsule collider를 이용해서 부딪히면 새가 가라앉도록 함.
위와 같은 기둥들을 찍어내기 위해서 prefab을 이용함.
프리팹으로 만들기 위해서 위의 pipe를 아래의 에셋에 드래그해서 넣어놓음.
위에서 prefab이 되면 파란색으로 색칠이 됨.
pipe generator를 만들어서 prefab을 찍어내기 위해서 빈 폴더를 만듦. >> 이에 빈 스크립트를 작성해줌.
게임 오브젝트로 파이프를 추가해줌
그럼 오른쪽에 pipe 오브젝트가 생성됐는데, 여기에다가 아래 있는 파이프를 끌어다가 놓으면 됨.
유니티로 만든 게임 오브젝트를 가진 변수 안에 우리가 만든 프리팹을 넣어준것임.
파이프를 instantiate를 통해 계속 프레임마다 찍어냄.
이것에 대한 초를 늘려주려면,
time에 대한 값이 1초가 넘어가면, 파이프를 생성하고 0초로 돌리라는 뜻
파이프가 너무 똑같이 생성되면 재미가 없으니, 다음과 같이 써줌.
x 좌표는 6에서 시작하고 y 좌표는 랜덤하게 시작함.
파이프 페이지에서 오버라이드에서 apply로 적용시킴.
제네레이터에서 적용한걸 다시 적용하기 위함.
처음에 어디서부터 파이프가 시작하고, 위 아래로 얼만큼 오르 내릴지를 결정해야 함.
y 파이프를 움직여본 결과 -1.35부터 4.7까지 생성되도록 하려면,
위와 같이 씀.
x좌표 6부터 시작, y좌표 -1.35부터 4.7까지
코드가 변경된 경우 prefab에 항상 변경을 적용시켜줘야함.
계속 파이프가 생성되면 메모리를 많이 차지하니, Destroy를 통해서 생성된 파이프를 삭제하는 것이 필요함.
이제 새가 통과할 때마다 점수를 올려주는 기능을 만들 것임.
UI를 만들 때는 바로 만드는 것이 아닌, canvas라는 부모 오브젝트를 만들어야 함.
UI의 캔버스를 누름.
텍스트를 생성하고, 앵커를 기준으로 텍스트 위치를 조정할 수 있음.
left : 0 top:0 (왼쪽 위에 딱 붙도록 .)
폰트에 대해서는 우측에서 조정 가능함. 폰트 파일을 끌어서 넣으면 원하는 폰트로 조종 가능.
여기서 텍스트가 입력되는 위치를 위로 정함.
여기서 이제 점수가 올라가는 코드를 작성하기 위해 component를 추가하고 이름을 score라고 지정함.
인스턴스에서 관리되지 않거, 클래스에서도 관리할 수 있는 변수를 static이라고 함.
unity engine의 UI를 가져옴 using unityEngine.UI
Text라는 component를 가져와서 스코어와 연결시킴. (Getcomponent<Text>().text = score.Tostring
pipe에 새로운 스코어업을 생성함.
score up에 box collider2d를 지정하여, 나중에 얘를 넘을 때 점수를 부여함.
EDIt collider를 이용해, 박스 크기를 조정함.
Trigger을 클릭하여 관통 가능하도록 만듦.
충돌을 했을 때, 액션을 취하고 싶다면, oncollision + 함
트리거일 때 , ontrigger + 함
scoreup 박스에 Add component를 통해 score up을 작성해줌. \
기존에 있던 스타트와 업데이트를 지워줌. 거기에 OnTrigger를 이용.
score라는 변수를 기존에 static으로 선언했으니