-
03 깃허브 - UI & Slime State
안녕하세요! 00 : 46초 현재 진행된 작업 중에는 1. 인게임 내 ui항목 동기화. 2. Slime의 상태 값 기본 / 추적 / 공격 세 가지 상태 값에 따른 동작을 구현했습니다. (hit 및 die는 현재 진행 중입니다.) 항목을 조금 더 보자면 Level, Hp, Energy, Option, Exp 가 추가되었으며 현재 Option 버튼을 제외한 나머지 항목은 정해진 값에 따른 동기화가 완료되었습니다. 우선 플레이어의 기본 스텟 값은 Manager 스크립트에 선언을 해 주었습니다. 접근 방식도 용이하고 플레이어는 여럿을 두지 않을 것이기에 선언을 해 두었습니다. 동기화 부분은 PlayerInfo 스크립트를 생성하여해 주었습니다. Update문이 아닌 코 루틴 함수의 While문에서 해결을 해 주었..
-
02 깃허브 - Player Combo Attack
안녕하세요! 00 : 44 영상을 먼저 첨부하겠습니다. 지난 시간에 동작 구현을 완료한 조이스틱 패드의 이미지를 변경하고 기본 공격 버튼을 만들어 콤보 공격의 애니메이션 적용을 완료하였습니다. + 발걸음 && (5) 공격 모션 사운드 효과를 주었습니다. 그럼! 바로 코드로 넘어가 보겠습니다!!! 첫 번째로 작업한 것이 왼쪽 조이스틱의 패드의 Source Image 변경과 오른쪽의 기본 공격 버튼을 만들어 주었습니다. (스킬 추가 버튼들을 만들 예정입니다.) Atk 버튼의 OnClick 이벤트로 호출되기 위하여 PlayerAttackButton (OnClickEvent를 담당할 스크립트)를 만들어 주었습니다. 플레이어로 접근하여 새로 생성한 PlayerAttack 스크립트의 BasicAttack 함수를 실..
-
01 깃허브 - Player Move
안녕하세요! 하던 교육 과정도 끝 마쳤고 (싱숭생숭...) 프로그래머스 문제를 풀면서 알고리즘 공부를 하고 있습니다. 병행하여 프로젝트도 따로 준비를 해보려고 했는데, 마침 지인 분이랑 마음이 맞아 깃허브를 이용해 프로젝트를 제작하고 구글 플레이의 출시를 목표로 잡고 (작은 게임이지만 도전..!) SDK 연동과 더불어 광고를 추가를 해보려고 합니다. 00분 25초 결과가 더 궁금하신 분들을 위해! 영상부터 첨부를 하겠습니다. 간단한 플레이어의 이동 동작이며 터치 백그라운드와 터치 패드를 이용해 플레이어의 이동 구현을 구현했습니다. 그럼.. 코드 내용부터 함께 보겠습니다! PlayerMovement입니다. 선언된 변수로는 플레이어의 이동 속도인 moveSpeed와 리지드 바디와 애니메이터를 받아올 변수들입..
-
00 깃허브를 사용한 팀업 프로젝트
이 카테고리에서는 게임 제작할 땐 여려 명의 개발자가 함께 함께 할 때 사용되는 깃허브 사용법과 (제가 기억하기 위해서) 깃허브를 사용한 팀업 프로젝트 파일의 일지들을 올릴것 입니다. 대게 개발자들 사이에서의 초기 이슈는 프로젝트 어떻게 공유 & 통합할 것인가 하는데요 제가 팀업 프로젝트를 진행하면서 했던 방식은 콜라보 / 플라스틱 방법이 있습니다. 서로 초대를 받아 유니티 엔진 자체 내에서 푸시 및 다운로드하기를 하며 서로 공유를 했었는데요. 가장 기본적인 문제가 작업한 내용 오류를 찾는 게 힘들었습니다. 별 다른 수정을 안 했는데도 오류가 나는가 반면.. 이 오류를 찾지 못해서 여태 했던 작업들을 다른 곳에 옮겨두고 상대방이 올린 파일을 받은 뒤 제 파일을 다시 옮기거나 삭제 및 수정을 하는 일이 간..
-
CCI - 14 - 맵 디자인 (작성중)
안녕하세요 현재 제작 중인 Terrain입니다. 제작 중이라고 말씀드리기엔 상~당히 부족 하지만..!!! 제가 Terrain을 많이 다뤄본 적이 없어서 필요한 기능을 찾아보며 지형 높낮이 및 텍스처를 입혀 보며 제작을 하고 있습니다. 이번 글에선 Terrain 다루어보며 알게된 부분들의 설명과 함께 완성된 Terrain 캡처 사진과 다른 팀원분들의 결과물들을 합친 Main Scene와 더불어 Intro -> Story -> Main 순서 대로의 시연 영상을 추가하여 글에 추가(수정)을 하도록 하겠습니다. 또한 추가적으로 현재 학습 하고 있는 Onclusion 기능과 Input System도 기회가 된다면 같이 첨부하겠습니다. 유니버셜 렌더 파이프라인 (아직은.. Terrain이 제가 원하는 느낌이 아닙니..
-
CCI - 13 - 장애물 3
안녕하세요!! 오늘은 그간 문제가 있어서 동작이 안됐던 부분이 해결되어서 기분이 좋은 날입니다. 하지만 동작 구분은 해결됐지만 이유는 아직 명확히 깨닫지 못했습니다. (이게 더 중요한데...) 우선.. 제가 만들고자 했던 부분은 1. 이동하는 Ground 2. 이동하는 Ground에서 장애물 피하기 두 가지입니다. 시행착오라고 말씀드려야 하나.. 모두 데이터 화를 해 놓진 않았지만.. 하나씩 살펴보시면서 생각나는 문제점들과 해결 방법에 대해서 같이 올리겠습니다. 우선 첫 번째로 제가 원했던 구현은 상/하로 움직이는 Ground였습니다. 00 : 20초 상/하 뿐만이 아닌 좌/우 도 움직이게 원했고 이것을 인스펙터 창에서 조절이 가능하게 하길 원했습니다. 동작 부분을 구현하기 위한 스크립트부터 같이 살펴보..
-
CCI - 12 - 장애물 2
(영상 2개) 안녕하세요 오늘은 2번째 Stage인 회전하는 원형 판에 몬스터를 피해 지나가는 형태와 지난번에 만들었던 bridge를 약간 변화시켜 주어 연출해준 효과를 같이 살펴 보시겠습니다. 우선! 이 bridge를 먼저 보시겠습니다. 바로 코드부터 가시죠! BridgeOff라는 스크립트를 새로 생성하여 작성하였습니다. 현재 제가 원하는 동작 구현은 플레이어가 bridge위로 올라가게 되면 bridge는 깜빡깜빡 거리며 사라질 것 같은 분위기를 연출해 주고 일정 시간이 지나면 bridge는 비활성화가 됩니다. (플레이어가 위에 있다면 콜라이더가 사라져 추락하게 됩니다.) 또한 일정 시간이 지나면 다시 bridge는 활성화가 됩니다. time : bridge가 사라질 시간입니다. bridgeAni : ..
-
CCI - 11 - 장애물
안녕하세요. 오늘은 간단한 큐브에 받아온 에셋 이미지를 입혀서 돌이 굴러가는 형태의 장애물을 만든 과정을 살펴보시며 추가적으로 Restart기능의 버튼을 살펴보겠습니다. (현재는 RESTART 기능밖에 없지만 왼쪽에 Title Scene의 버튼을 만들 예정입니다.) (아직 TITLE Scene는 작업이 완성되지 않았기에 보류 중입니다.) 우선 Cube를 살펴보겠습니다. 이 Cube형태의 장애물은 굴러가는 형태로 구현을 할 것이며 또한 CubeRun이라는 Name을 지어 주었습니다. rigidBody의 AddTorque를 사용하여 회전을 해주었으며 Player와 충돌 시 플레이어는 넉백 효과를 받게 됩니다. 바로 코드를 살펴보겠습니다. CubeRun스크립트입니다. cubeRigidBody : 큐브가 갖고 ..
-
CCI - 10 - 플레이어 이동구현_2 & 화면회전
안녕하세요. 플레이어는 현재 조이스틱의 컨트롤러를 움직여 방향을 지정한 값을 PlayerMovement에 넘겨주어 이동을 하는 방식입니다. 맵을 디자인 하시는 분도 계시고 다른 퀴즈를 준비하는 분도 계셨고, 다양한 패턴의 적을 구현하는 분도 계셨습니다. 모두 이 플레이어를 이용해 동작을 구현하고 계셨기에 어찌 보면 중심이 되었다고도 할 수 있습니다. 요청이 들어온 것은 아니지만 회의를 하던 중 나중에 주석처리 및 보류를 하더라도 PC환경에서 테스트를 수월하게 할 수 있게 키보드로 값을 받아오는 건 어떨까? 하고 얘기가 나왔습니다. 저는 흔쾌히 승낙을 했고, 바로 집에 가서 코드를 작성했습니다. 코드를 작성하려던 저는 카메라 회전도 같이 된다면 좀 더 몰입감을 줄 수 있지 않을까? 라는 생각이 들어서 간단..
-
CCI - 09 - 맵 디자인 & Death zone
안녕하세요. 오늘은 간단한 맵 구성과 함께 플레이어가 맵에서 추락 시 닿으면 죽는 동작 구현을 함께 알아보겠습니다. 이 죽는 동작구현의 코드는, 플레이어의 하트가 모두 소진되었을 시에도 실행시켜 주어 같은 동작이 되게끔 하였습니다. 바로 이런.. 동작이 연출됩니다. 첫 번째 작업은 간단한 큐브 맵 이미지를 이어 붙여서 그 위에 CatEnemy들을 올려 두었습니다. 이후 이 맵 아래에 DeathZone을 설치하여 플레이어가 맵에서 이탈되어 추락 시 죽은 상태가 되게 구현을 해 주었습니다. 새로 생성한 PlayerDeath 스크립트입니다. 간단히 이 콜라이더에 충돌체 검사를 OnCollisionEnter로 받아 충돌 시 이벤트가 실행되게 해 주었으며 collision의 게임 오브젝트 태그가 Player일 시..
-
CCI - 08 - 플레이어 피격모션
안녕하세요. 이번 글에서는 적 (지정된 태그)에 피격 (충돌) 되었을 시 이렇게 플레이어가 뒤로 넉백 되는 부분에 대해서 알아볼 예정입니다. 간략하게 구현 동작 부분을 살펴보자면. 플레이어가 일정 물체랑 충돌 시 뒤로 지정된 값만큼 넉백 되며 이 넉백 되고 일정 시간 동안 다른 물체에게 피해를 입지 않습니다. (레이어 교체) 또한 피격 시 하트가 감소되는 부분도 함께 살펴보도록 하겠습니다. (하트 감소) Player의 충돌을 체크하는 부분은 OnCollisionEnter에서 구현하였습니다. 각 충돌된 collision의 태그가 "CatEnemy" 이거나 "Trap" 이거나 "CubeRun" 이거나 "CircleTrap" 일 때 실행되는 조건문입니다. (처음에는 레이어를 통일하거나 태그를 통일해서 적용을 ..
-
CCI - 07 - 적 & 펫 스킬 적용
안녕하세요 오늘은 적(야옹이)과 함께 펫이 스킬을 사용하면 근처의 콜라이더를 추출 해 잠시 일시 정지하게 만들어주는 기능을 함께 보겠습니다. 음.. 우선 제가 처음에 만들었을 때는 야옹이를 입혀놓지 않고 단순 큐브로 태그만 지정해 주어서 테스트를 했었는데.. 현재는 야옹이가 담겨져 있으니 앞 뒤 흐름이 잘 맞진 않더라도.. 제작 했던 순서대로 천천히 나아가 보겠습니다. 우선 펫의 스킬을 사용하면 콜라이더를 추출하는 코드부터 살펴보겠습니다. 우선 첫 번째로 콜라이더를 추출할 스크립트를 새로 만들었습니다. FoxColExtract의 스크립트를 생성하여 제작했으며. 선언 변수는 간단합니다. listCols : 추출한 콜라이더들을 담을 list입니다. colExtractRadius : 추출할 범위입니다. pla..
-
CCI - 06 - 펫 스킬 (쿨타임)
안녕하세요! 오늘은 이 펫 스킬에 대해서 알아볼 건데요 2~3개 정도 플레이어에게 도움을 주는 스킬을 계획했지만 현재는 1개밖에 못 만들었습니다. 이 스킬에 간략히 설명을 드리자면. 이 스킬을 사용하게 되면 플레이어의 일정 범위 안에 있는 적 은 일정 시간 동안 "정지"를 하게 됩니다. 이후 일정 시간이 끝나면 다시 원 상태로 돌아오게 됩니다. 다른 버튼과 다르게 쿨타임 이 적용된 모습을 시각화로 보여 주었으며 이미지 타입의 Filled를 이용하여 조절을 해 주었습니다. 총 두 겹으로 뒤에는 일반 이미지로 BackGround를 표현해 주었으며 앞의 이미지는 Button으로 쿨타임 적용 모습을 보며 터치/클릭 시 상호작용이 가능하게 만들어 주었습니다. FoxSkill 스크립트입니다. coolDown : 0..
-
CCI - 05 - 펫!!
안녕하세요. 이번엔 플레이어를 따라다니는 펫을 알아보겠습니다. 나름 예쁘게 찍어주고 싶어서 여러 장 찍어 봤는데 음.. 뭔가 어색함이 연출되는 느낌을 지울 수가 없었습니다.. 유니티 에셋 스토어에서 무료로 받아온 Toon Fox입니다. 원래는 날아다니는 펫을 데리고 다니면서 적들을 공격하거나 플레이어를 도와주는 역할군으로 나누려고 했었는데, 첫 번째로, 저희가 회의를 거치면서 전투 씬이 없는 것이 좋을 것 같다는 의견이 나왔었습니다. 두 번째로, 도난당한 고양이를 구하는 Run 게임으로 그에 맞는 이미지를 구하고자 유니티 에셋 스토어를 찾던 중 괜찮은 에셋이 있어서 가져오게 되었습니다! 세 번째로, 귀엽습니다. 네 우선 바로 코드로 가겠습니다. FoxFSM이라는 스크립트를 생성해 주었습니다. 유한 상태 ..
-
CCI - 04 - Hp
안녕하세요. 오늘은 플레이어의 hp를 알아보려고 합니다. 음.. 우선 살짝 정리가 안되는데 최대한 작업했던 순서대로 나아가 보겠습니다. 첫 번째로 플레이어의 체력을 먼저 보겠습니다. 이 하트 Sprite는 플레이어의 체력을 대신할 것입니다. 하트가 비어 지거나 풀로 채워지며 시각적인 이미지를 보여 줄 수도 있고 하트(hp)가 추가 / 삭제 가 될 수 있습니다. 하트의 초기 설정 (최대치)는 8개로 정했습니다. 바로 코드로 넘어가 보시죠! PlayerHit라는 스크립트를 생성해 주었습니다. 플레이어가 적에게 맞거나, 혹은 맵에 있는 하트를 먹으면 하트가 생성되게 할 것입니다. 우선 선언 변수를 보자면 heart : 풀 하트 개수입니다. overHeart : 최대 하트 개수입니다. (풀 하트보다 높으면 빈 ..
-
CCI - 03 - 버튼 & Mini Map (UI)
안녕하세요!! 이번 글에서는 플레이어의 UI항목에 좀 더 알아보고자 합니다. 점프 버튼, 그리고 겟 버튼, 미니맵 구현 동작을 알아보려고 합니다. 우선 가장 먼저 변경된 조이스틱 이미지를 먼저 보신 뒤 나아가 보겠습니다. 변경한 터치패드 Sprite 입니다. 원하는 이미지를 얻고 싶었는데, 공부했던 책들 중 하나가 생각나서 사용한 프로젝트에서 이미지를 가져오게 됐습니다 ㅎㅎ (별건 아니지만 화면에 배치된 UI항목은 플레이 중이라면 계속 보게 될 화면이니.. 유저분들의 입장까진 아니더라도,, 제가 원하는 걸 하고 싶었습니다 ㅎㅎ) 네 우선 점프 버튼부터 알아보겠습니다. 우선 PlayerMovement 스크립트에서 OnClickJumpBtn이라는 점프 기능의 함수를 만들어 주었습니다. if문에서! isJum..
-
CCI - 02 - 플레이어 이동 구현
안녕하세요. 오늘은 플레이어 이동 구현에 대해 알아볼 예정입니다. 플랫폼은 모바일 환경으로 정하였고 개발 환경은 Unity입니다. 조이 스틱의 패드 역할을 하게 될 Sprite입니다. 조이 스틱의 컨트롤러 역할을 하게 될 Sprite입니다. 간단한 원형 이미지를 받아와 터치 패드를 구현했습니다. TochPad를 제어하기 위한 TochPad 스크립트를 새로 생성하였습니다. _touchPad : 조이스틱 패드 안에 엤는 컨트롤러입니다. 일반적인 3차원 공간에 있는 Transform이 아닌 Canvers상에 존재하는 위치이기에 RectTransform을 받아와 주는 모습입니다. _dragRadius : 조이스틱 패드의 반지름입니다. (가운데를 기준점을 잡고 움직일 위치의를 잡았습니다.) _startPos : ..
-
CCI - 01 - 에셋 및 기획 단계
안녕하세요. 이 C.C.I 카테고리에서는 팀업 프로젝트중 담당했던 부분을 동작별로 나누어 코드설명 및 영상을 올리려고 합니다. 또한 문제점 들 및 잘못된점 등을 같이 첨부를 하려고 합니다. 현재까지 진행된 부분을 영상으로 한 번에 보실 분들은 https://userkhk.tistory.com/53 CCI - 제작중 - (추가10)★★★★★ 안녕하세요. 이번 생존형 게임 카테고리에서는 장르는 정했지만 아직 기획적인 요소가 남아 있어 현재 제작 중인 프로젝트입니다. 현재 제작 중인 단계로 얼추 간추려지면 제작 과정과 함께 업 userkhk.tistory.com 페이지를 참고 하시면 시간 절약에 좋을 것 같습니다. 그럼 바로 시작하겠습니다! 우선 이 프로젝트는 팀업 프로젝트 입니다. 이 프로젝트에서 제 주요 ..
-
CCI - UI항목 별도 정리
00 : 40초 03 : 30초 1) 현재 까지 구현된 UI 항목 영상 2) 제안서 및 UI항목 코드 설명서 2) 항목 영상의 경우 PDF파일을 03분 30초의 동영상으로 5초씩 끊어서 촬영했습니다. 총 42페이이며, 작성한 제안서 및 코드 설명이 담겨져 있습니다. (흐름도도 담겨 있지만.. 처음 해보는 거라 많이 부족해도 너그러이 봐주시길 바라겠습니다... ㅎㅎ..) (하나씩 캡처를 하려고 했지만 시간 페이지가 분량이 길어지기에 보시는 분의 시간 절약을 하기 위한..) 앞으로 이 카테고리 에서는 팀업 프로젝트에서 담당했던 부분의 코드를 설명하며 나아가는 식으로 진행하겠습니다. 감사합니다.
-
팀업 프로젝트 03. Enemy 상태구현 및 넉백
수정된 맵 사진입니다. 마을과 Boss zone을 나누어 마을에서부터 일반 몬스터를 잡으며 아이템을 얻고 보스를 소탕하는 동작 구현으로 설계를 하였습니다. Terrain인 필드는 경로가 너무 길다고 판단하여 맵을 Teerain 컴포넌트를 이용해 수정하고 새로 배치를 해 주었습니다. Enemy의 상태인 Return, Damaged, Die 상태를 보겠습니다. Damaged와 Die 상태는 매 프레임마다 실행되는것이 아닌 조건이 성립할 때 한 번씩 실행되기에, Update문에서 함수 실행을 하지 않았습니다. 여기서도 거리를 체크 하기 위해 Vector3.Distance를 사용하였습니다. 거리를 체크하는 방법을 몇가지 더 찾아보니 Vector3 에는 1. Distance 2. magnitude 그리고 처음 보..
-
팀업 프로젝트 02. Enemy의 상태 구현 및 Time.deltaTime
주기적으로 Enemy의 상태를 체크하기 위한 Update 함수에서의 siwtch문입니다. 우선 Slider를 사용하려면 네임스페이스 using UnityEngine.UI를 선언해 주어야 합니다. Enemy의 체력을 나타내 주는 slider를 주기적으로 확인하기 위하여 Update 함수에서 Slider를 담은 변수 hp_bar의 value 값을 현재 hp / 최대 hp로 나누어 0.0f - 1.0f의 value 값을 만들게 하였습니다. Enemy의 Move함수입니다. 첫 번째 if문에서 Vector.Distance 함수를 사용하여 Enemy의 위치화 초기 위치의 거리가 최대 움직일 수 있는 moveDis보다 크다면, Return(복귀) 상태로 변경하게 해 주었고, else if문에서는 최대 움직일 수 있는..
-
팀업 프로젝트 01. 디자인과 상태구현
01. 팀업 프로젝트 디자인과 상태 구현 플레이어, 일반 몬스터, 보스 몬스터, 인벤토리 구현에서 일반 몬스터를 맡게 되었습니다. 앞으로 진행될 프로젝트들의 과정과 개인 프로젝트의 진행 과정을 블로그를 이용해 기록을 할 예정입니다. 일반 몬스터인 Enemy로 플레이어와 마을의 느낌에 어색하지 않게 반 실사적인 휴먼로이드의 캐릭터를 에셋에서 찾아 무료로 다운로드를 했습니다. [ Enemy의 상태 구현 ] Idle인 기본 상태, Move인 이동 상태, Attack인 공격 상태, Return인 복귀 상태, Damged인 대미지 받는 상태, Die인 죽음 상태로 총 Enemy의 상태는 6가지입니다. public EnemyState enemyState : 초기 상태 및 상태 값을 체크하기 위해 변수로 선언했습니다..