Unity/Knowledge (58) 썸네일형 리스트형 ⑧ 타이머 설정 및 게임 끝내기 60초에서 0초로 감소하도록 시간이 흐르는 로직을 구성할 것이다. 우선은 게임이 끝났을 때 나타나는 UI를 생성해 보자 텍스트에서 Alt+Shift 누른 상태로 오른쪽 하단 다음과 같이 세팅하였다. 게임이 끝날때 나오도록 체크를 해제한다 GameManager Script로 들어가서 시간을 감속시켜주는 타이머기능을 만들어 보자 변수 totalTime 생성 deltaTime은 모든 기기에서 동일한 속도를 낼수 있도록 하기 위함 60초 라는 전체 시간에서 deltaTime을 지속적으로 빼도록 하였다. 시간이 흐르는지 확인해 보자 소수점 둘째자리까지만 표기하도록 해보자 이제 남은 시간이 0이 되었을 때 멈춘 뒤, EndPanel이 나오도록 설정해야 한다. Time의 크기를 0으로 만들어주는 것으로 첫번째 프레임.. ⑦ 점수 올라가게 하기 점수는 UI를 통해서 보여지게 할 것이다. UI는 Canvas라는 도화지 위에 그려지고, 카메라 위치와는 관계 없이 보여준다. 일반적으로 버튼, 랭킹, 텍스트와 같은 정보들을 보여줄 때 사용한다. 폰트 다운로드 링크 다운 받은 폰트를 Assets 폴더안에 넣어준다. UI를 생성하기 위해서 하이어라키창 오른쪽 클릭 - UI - Legacy - Text UI를 다음과 같이 셋팅하자 복붙하여 총 4개를 생성 이제 캐릭터와 몬스터가 충돌 했을 때 점수를 올려주고, 그 점수를 UI에 표시해주면 될 것이다. GameManager script 에서 작성하면 된다. 싱글톤 = 나 하나 밖에 없고 여러 스크립트에 접근이 가능하도록 함 점수를 올려주는 기능을 만들어 보자 함수 앞에 Public을 붙이는 이유는 외부 스크립.. ⑥ 몬스터 구현하기 - 반복 생성 로직 만들어 놓은 몬스터를 반복적으로 생성할 수 있도록 하자 하이어라키 창 오른쪽 클릭 - Create Empty 이름을 GameManager으로 명명하고, 스크립트도 하나 생성 게임의 전반적인 진행을 위한 스크립트이며 이것을 게임 오브젝트 컴퍼넌트 안에 넣는다. 하나의 준비 작업이 더 필요하다. 몬스터 게임 오브젝트들을 프리팹화 시키는 것 프리팹은 일종의 붕어빵 틀 이 프리팹을 생성하기 위해서 Assets 안에 폴더를 생성 몬스터 게임 오브젝트들을 프리팹 폴더안에 넣는다 GameManager script에서 반복적으로 몬스터를 생성해주는 코드를 작성하면 될 것이다. 여기서 instantiate는 게임오브젝트를 생성시키는 함수이고 Monster는 프리팹 InvokeReapting은 함수를 반복적으로 실행시켜주.. ⑤ 몬스터 구현하기 - 랜덤 몬스터 ⓐ 3 종류의 몬스터를 생성 ⓑ 랜덤한 위치에서 몬스터가 떨어짐 ⓒ 각 종류마다 랜덤한 크기의 몬스터를 생성 ⓒ 각각의 몬스터마다 점수를 다르게 셋팅 몬스터가 리젠되는 범위부터 생각해 보자 이제 Start 함수에서 랜덤한 위치에 몬스터가 생성되는 코드를 입력해 주자 우선은 사이즈의 기본값을 1이라 하고 점수값을 1로 변수 설정 랜덤한 사이즈 값을 정수로 하기위해 자료형 int를 사용 변수 이름은 type으로 설정 3가지 크기로 만들 것이므로 타입은 3개를 만들어야 한다. 해당 스크립트는 Redwolf의 스크립트이다. 타입1 은 기존의 0.7배 크기로 하였고 점수는 1점 타입2 은 기존의 1.0배 크기로 하였고 점수는 1.5점 타입3 은 기존의 1.2배 크기로 하였고 점수는 2점 이 것들을 트랜스폼 로컬스.. ④ - Q&A Q > 만약에 Destry(Collision.gameObject); 로 입력했다면 어떻게 될까? A > 파괴해라 충돌한 게임오브젝트를 다음 영상과 같이 된다. ④ 몬스터 구현하기 - 몬스터 코딩하기 ⓐ 3 종류의 몬스터를 생성 ⓑ 랜덤한 위치에서 몬스터가 떨어짐 ⓒ 각 종류마다 랜덤한 크기의 몬스터를 생성 ⓒ 각각의 몬스터마다 점수를 다르게 셋팅 몬스터를 먼저 만들어 보도록 하자 하이어라키 창 오른쪽클릭 - 2D Project - Sprites - circle 새로 생성시킨 게임 오브젝트의 이름과 이미지를 설정 몬스터에게 중력을 부여하기 위해 Unity에서 준비 해 놓은 기능을 활용하자 Add Component - rigidbody 2D 물리에 필요한 힘들 - 중력, 무게, 마찰력 설정 가능 파이터에 애니메이션을 입힌 방식과 동일하게 붉늑에게도 애니메이션 컴퍼넌트를 추가 몬스터가 떨어지는지 영상을 통해 확인해 보자 몬스터가 그라운드에 부딪혔을 때 멈추지 않고 뚫고 지나가는 현상을 제어하기 위해서 A.. ③ - Q&A Q > 좌우로 움직이는 캐릭터를 만들기 위한 코딩 질문입니다. if (transform.position.x >= 2.71f) { direction = -0.05f; renderer.flipX = true; } 으로 하였을 때, 우측 끝에 도달할 시 방향 전환이 잘 되는데 if (transform.position.x == 2.71f) 위와 같이 하였을 때 x값이 2.71에 도달하면 이동방향과 캐릭터가 전환되지 않는 이유가 무엇인가요? A > Unity에서는 float 값을 완전히 정확하게 비교하는 것이 권장되지 않습니다. float 값을 정확하게 비교하는 것은 특히 부동 소수점의 한계로 인해 문제가 발생할 수 있습니다. 그러므로 범위를 정의하여 비교하는 것이 좋습니다. "unity 부동 소수점 오차" 키워.. ③ 캐릭터 이동하기 오늘의 목표는 코드를 작성해서 화면 상의 캐릭터를 움직여 보는 것이다. 그러기 위해서는 C# 스크립트를 작성해야 한다. 생성된 스크립트 파일 이름을 fighter으로 명명한 뒤, Scripts라는 폴더를 하나 더 생성해서 넣어 두기 Fighter 스크립트를 어떻게 게임 오브젝트에 적용하는가? 하이어라키 창에 있는 Fighter 게임 오브젝트를 클릭해보면 Inspector 창이 보인다. 여러 가지 속성들을 볼 수 있으며 모두 일종의 스크립트이자 Component라고 부른다. 그러므로 만들어 놓은 Fighter 스크립트도 하나의 속성처럼 붙여주도록 하자 그 다음 Fighter 스크립트를 더블 클릭하면 비쥬얼 스튜디오가 실행된다. frame은 1초에 연산되는 횟수 frame 당 Start함수는 한 번만 진행 .. ② 애니메이션 맛 보기 애니메이션을 만들기 전에 Assets 폴더 안에 Animations 라는 폴더를 생성 Animations 폴더 오른쪽 클릭 - Create - Animation 이름을 FighterIdle로 명명 Loop Time은 '계속해서 반복적으로 수행하겠다는 의미' 하이어라키창의 Fighter 오브젝트를 클릭한 뒤 생성해놓은 애니메이션파일 FigherIdle을 추가 FighterIlde 더블 클릭 만약에 안 열린다면? Windows - Animation - Animation 하이러아키창의 Fighter 오브젝트를 클릭한 뒤 0이라 되어있는 곳에 파이터모션1 삽입 흰색 바를 0에서 10으로 이동 동일한 방법으로 흰색 바가 위치한 곳에 파이터모션2 삽입 흰색 바를 10에서 20으로 이동 다시 흰색 바가 위치한 곳에 .. ① 기본 씬 구성 첫 번째 프로젝트를 비교적 쉽게 접근 할 수 있는 2D 게임으로 만들어 보려고 한다. 2D 게임을 만들기 위해 해당 템플릿을 설정 후 프로젝트 이름을 설정한다. 어렸을 때 즐겨했지만 서비스가 종료된 다크세이버라는 게임의 캐릭터를 이용하기 위해서 프로젝트 이름을 Darksaver1 이라고 명명하였다. 참고자료 - 다크세이버 관련 링크 더보기 링크1 - 다크세이버 카페 링크2 - 다크세이버 리턴즈 편하게 작업하기 위해서 레이아웃 2 by 3으로 시작해보자 Project를 오른쪽 클릭한 뒤 One Column Layout 모바일에서 동작이 가능하도록 만들기 위해 화면의 비율을 모바일 기준으로 맞춰보자 가로인 X 값을 760으로, 세로인 Y 값을 1280으로 설정 자, 이제 게임 배경화면을 만들어 보자 이름, .. 이전 1 2 3 4 5 다음