전체 글
-
몬스터 상태 구현 (Update)
현재 작업 진행중인 영상 입니다.몬스터 상태 구현을 업데이트 하였습니다. 또한 기존 애니메이션 전이 조건을 대부분 Trigger로 진행 하였었는데, 한번 꼬이기 시작하먼 겉잡을수 없어진다는 점과, 흐름을 파악하기가 매우 힘들어 지는 현상이 발생하여 모든 파라미터를 Bool 변수로 true || false로 변경하였습니다. 간단한 흐름 상태를 보자면 몬스터는 Idle 상태에서 유니티가 실행 되면 Walk 상태가 됩니다. Walk 상태에서 Idle로 넘어가는 조건은 플레이어에게 피격을 당했을시 전투 돌입 준비 상태로 들어섭니다. 준비 상태 이후 플레이의 위치를 총 2번 감지하는데, 첫번째 감지는 플레이어를 추적하기 위함이고 두번재 감지는 플레이어가 몬스터의 공격 범위 내에 들어섰는지 감지합니다.이후 검을 드..
-
몬스터 상태 구현
몬스터의 상태 구현과 애니메이션 작업 과정 입니다. public enum MonsterState{ Idle, Walk, AttackReading, Attack}public MonsterState monsterState = MonsterState.Walk;현재 몬스터의 상태는 대기, 걷기, 공격대기중, 공격 으로 총 4가지 상태가 있으며 초기 상태는 걷기 상태 입니다. switch (monsterState){ case MonsterState.Idle: monsterAnimator.SetTrigger("Idle"); if (player.position.x = targetX) { transform.localScale = new Vector2(..
-
플레이어 공격
작업 진행중인 영상 입니다.private bool isAttack = false;private bool isAttacking = false;private float timeBtweenAttack = 0f;private float timeSinceAttack = 0f;private void Attack(){ timeSinceAttack += Time.deltaTime; if (isAttack && timeSinceAttack >= timeBtweenAttack) { timeSinceAttack = 0; playerAnimations.PlayerAttacking(); if (isAttacking == false) { Hit..
-
플레이어 점프 && 대쉬
작업 진행 중인 영상 입니다.이중 점프의 로직 설계부터 살펴 보겠습니다. 점프 키는 "Space" 그대로 진행이 되었으며, 사용자가 점프 키 입력 후 1초 안에 한번 더 입력하면 한번 더 점프가 가능합니다.*1초 가 지나면 점프가 되지 않습니다. 또한 그라운드 체크 함수를 활용해 Ground에서 떨어 졌을 시 1초 내에 점프를 하게 되면 사용이 가능해 집니다. 코드를 보겠습니다.[SerializeField] private Rigidbody2D playerRigidbdy2D;[SerializeField] private Transform layPoint;[SerializeField] private LayerMask layerMask;[SerializeField] private float layerYLengt..
-
플레이어 이동 로직
작업 진행 중인 영상using UnityEngine;public class PlayerMovement : MonoBehaviour{ [SerializeField] private Rigidbody2D playerRigidbdy2D; [SerializeField] private float walkSpeed = 20.0f; private float xAxis = 0f; private void Update() { GetInputs(); MovePlayer(); } private void GetInputs() { xAxis = Input.GetAxisRaw("Horizontal"); } private void MovePla..
-
쉐이더 그래프_아웃라인
안녕하세요. 이번 카테고리 에서는 쉐이더 그래프를 이용해서 아웃라인을 그려보는 방법에 대해 다뤄 보려고 합니다. 요즘 쉐이더에 관심이 많이 생겨서 이것저것 찾아 보고 있는데 알면 알 수록 신기하고 흥미로운 기법들이 많이 존재하며 평소 생각하지 못했던 구현들이 되는걸 보고 어서 빨리 다 해보고 싶다는 생각이 들었습니다. 아직은 작디 작지만... 천리길도 한걸음 부터 라는 말이 있듯이.. 천천히 하나씩 하나씩 지식을 습득해 나아가 보겠습니다. (그렇다고 너무 느리겐 말고..) ※'아웃라인'을 그리는 수 많은 기법들 중! '쉐이더 그래프'를 이용하여 비교적? 쉽게 아웃라인을 그리는 영상을 보게 돼서 학습한 내용과 더불어, 복습겸 다시 보기 위한 글로 작성하게 됐습니다. 흠 그렇다면 Go! 에셋은 유니티 에셋 ..
-
이벤트 함수 Update(), FixedUpdate()
안녕하세요. 이번 카테고리에는 평소 사용하던 Update() 와 FixedUpdate() 함수에 대해 다뤄 보려고 합니다. Unity엔진 에는 많은 이벤트 함수들이 있죠. (Awak(), Start(), Update(), FixedUpdate(), LateUpdate() 등등..) 그중에서도 Update() 와 FixedUpdate() 의 알고 있던 차이점과 더불어 몰랐던 부분까지 함께 살펴 보겠습니다. 먼저! 프레임(Frame)이라는 것 부터 살펴 보겠습니다. 이 Fram이란 1초에 화면이 몇 번 다시 그려질 수 있는지를 나타내는 단위 라고 합니다. 유니티 엔진은 프레임 단위로 처리가 이루어지고 매 프레임마다 작업을 수행 할 수 있는데요 이러한 단위 표시를 FPS 를 사용 합니다. (Frame Per ..
-
HTTP 통신
안녕하세요. 이번 카테고리는 연습 및 학습 용도 이며 다시 보기 위함 + 한번 더 학습한걸 복습하기 위한 용 입니다. 평소 unity 프로젝트 영상이나 호기심 가는 기능 구현을 찾아 본다던가 c# 문법 책을 찾아 보면서 공부를 하고 있었는데, 우연히 서버 관련한 글을 보게 되었습니다. unity 엔진이나 c#의 다양한 기능 구현도 제대로 하지 못하는데, 서버 관련해서 찾아 보려니 갑자기 난이도가 몇배는 올라간 느낌 이였습니다.. 머릿속이 순간 하얘지긴 했는데, 새로운걸 학습 한다고 생각하니 흥미가 생기기도 하고ㅎㅎ 빠르진 않더라도 천천히 한걸음씩 차곡차곡 나아간다는 생각으로 학습한 내용들을 정리하도록 하겠습니다. (학습된 내용이나 제가 이해한 내용이 잘못 될 수도 있음) 우선 제가 학습한 글은 API와 ..
-
쉐이더(Shader)..(1)
안녕하세요. 오늘은 쉐이더(Shaer)에 대해서 알아 보면서 학습과 더불어 나중에 다시 찾아와 보기 위함으로 글을 작성하려고 합니다. 쉐이더(Shader)에 대해 간략 하게 나마 정점 쉐이더(Vertex Shader)와 픽셀 쉐이더(Pixel Shader)라는 두가지 주요 구성 요소로 구성 되어 있다고 읽었으며, 그래픽 처리 파이프라인에서 렌더링하는데 사용되는 프로그램 정도로만 알고 있었기에.. 직접 사용해 본적도 없을 뿐이거니와.. 쉐이더(Shader)에 대해 질문을 들었을 때 '아차!' 싶었습니다.. 우선.. 본론으로 들어가서 셰이더 혹은 쉐이더 라고 불리우는데 유니티 셰이더 라는 말은 똑같이 Unity 게임 엔진에서 사용되는 쉐이더(Shader)를 가리키는 말이며, 물체의 표면에 빛을 반사하거나, ..
-
RPG 듀토리얼 01. 에셋 준비물 (in Game 동영상)
안녕하세요. RPG 포트폴리오를 만들어 볼 겸 스스로 학습을 토대로 제작해보자 해서 만들게 된 rpg 튜토리얼 프로젝트입니다. 02 : 20초 아직 미완성 프로젝트이지만, 제작 과정과 함께 동작을 파트별로 나눠 개발 일지로 글에 담으며 지속적인 수정을 해줄 프로젝트 입니다. 현재까지 진행된 과정은 3 - 4주 정도 소요가 되었으며 다른 작업 중 수정되는 요소들도 있고 현재도 계속 수정 중이기에 정확히 가늠하기가 어렵습니다. 먼저 이 rpg 튜토리얼의 구성은 이러합니다. 1. Player, NPC(마을 주민, 장로, 상점, 교관, 부상당한 NPC), monster1,2, Boss 플레이어 이외의 8명의 상호작용을 할 오브젝트들이 필요합니다. 플레이어 - 이동 / 스킬 / 대시 구현으로 시작해서 구현할 Li..
-
디자인 패턴 - 옵저버 패턴
안녕하세요. 이번 글에서는 디자인패턴 중 옵저버 패턴에 대해서 학습하고 기억하기 위하여 글을 작성 하게 되었습니다. 디자인 패턴에 대해서도 상당히 많은 패턴들이 존재하는데요.. 이번 글에서 다룰 옵저버 패턴, 및 싱글턴 패턴, 상태 패턴, 이벤트 버스 패턴, 커맨드 패턴, 방문자 패턴, 전략 패턴, 데커레이너 패턴, 어댑터 패턴, 퍼사드 패턴, 서비스 로케이터 패턴 등.. unity 프로젝트에는 직접 사용한 경험은 없지만, 수많은 패턴들이 존재하며.. 이름만 들어본 패턴 및, 아예 처음 들어보는 것도 있었습니다.. 심지어 싱글턴 패턴은, 제가 사용한다고 사용했는데 좀 더 알아보니 제가 작성한 Script는 싱글턴 패턴이 아닌, 단 순 static 변수 클래스라고 읽는 게 맞다는 이야기도 들어서.. 상당히..
-
05. dropper NextStage Button
"Next Stage" Button 플레이어가 목표 지점에 도착했을시 띄워줄 UI 항목이자 다음 스테이지로 넘어가는 버튼 입니다. 스크립트의 작성은 PlayUiCanvas에 입혀줄 스크립트 PlayerUiController에 작성해 주었습니다. OnNextStageButton 함수를 만들어 주어 NextStageButton의 OnClick이벤트 에서 실행을 해 주었습니다. 실패 했을시 ui항목을 꺼주는 PlayerUiControllerOff 함수도 재사용 해 주었습니다. 특이 사항으로는 또한 _playerController (player) 스크립트의 PlayerDieUiOn을 실행 시켜 주어 Manager에 있는 Index에 맞게 포지션이 이동 되도록 구현해 주었습니다. OnCollisionEnter (..
-
04. dropper ReTryAgain Button
우선 실패했을시 뜨는 ui항목의 버튼인 "try again" 버튼을 누르면 실행될 함수 부터 보겠습니다. 실행은 On Click 이벤트에서 실행을 해 줬으며 PlayerUiController 의 스크립트를 만들어 주었습니다. 각각 플레이어 컨트롤러 / 플레이어 실패 ui, 성공 ui 를 담아온 변수들 입니다. 실패시 버튼을 클릭하면 실행될 OnRetryButton 입니다. 우선 PlayerUiControllerOff를 보자면 현재 켜져 있는 ui 항목들을 비활성화 시켜주는 코드인데 성공 했을 시에도 사용할것이여서 함수로 따로 만들어 두었습니다. _playerController.PlayerDieUiOn 함수를 보겠습니다. 장애물에 닿았을 시 꺼졌던 콜라이더와 애니메이터 컴포넌트들을 활성화 시켜주었습니다. ..
-
03. dropper Ragdoll & ui
안녕하세요. 오늘은 플레이어가 충돌시 일어나는 ragdoll 상태와 더불어 승리 실패 성공 을 했을 시 ui 를 따로 살펴 보려고 합니다. 처음 Ragdoll 시스템을 접했을때 상당히 신기했습니다. 원하는 애니메이션이 아닌 자연스러운? 연출이 가능했으며 현재까지도 많은 옵션값은 잘 모르지만 ragdoll을 어떻게 적용하고 joint를 어떻게 연결 하면 되는지는 확실히 알았습니다..! 유니티 자체에서 Ragdoll을 만들어 입혀 주게 되면 자동으로 박스 콜라이더와 리지드바디 그리고 캐릭터 조인트가 생성이 됩니다. 원하는 부위에 리지드바디와 캐릭터 조인트를 생성하여 더 연결을 할 수 있고, 사이즈 및 위치를 변경 시킬 수 있습니다. 시작시 터치 화면 우선 처음 시작하면 어색함을 없애주기 위하여 Touch T..
-
02. dropper 로직
안녕하세요. 오늘은 dropper에 대해 가장 큰 틀인 드롭 하는 부분을 살펴 보겠습니다. 1. 판넬을 터치 & 클릭 하면 점프를 뛴다. 2. 낙하를 한다. 의 추가적인 부분은, 애니메이션 재생과 더불어 속도선을 추가하여 속도감을 좀 더 주려고 했습니다. 간단한 코드부터 바로 살펴 보겠습니다. player를 컨트롤 해주기 위해 "PlayerController"의 스크립트를 만들고 _maxVelocity : max 중력 값. _isJumpBoxCollision : 점프박스에 닿아있는지 체크할 불 변수 그리고 player의 Animator를 받아올 _playerAnimator를 선언해 주었습니다. 여기서 코드리뷰를 받기 전 스크립트에는 public변수와 getcomponent 가 상당히 많았었는데요, 이 p..
-
01. dropper 기획 (재)
안녕하세요. 이번 카테고리에서는 이전에 작업했던 작업물을 가지고, 그대로 가져오긴 그렇고.. 기억을 더듬으며 간단한 낙하 하는 게임 프로젝트를 제작해 보려고 합니다. (운 좋게? 개인적으로 플레이어 모델링을 구하였습니다.) - [dropper] 간단한 게임 진행 순서 1. 플레이어가 낙하를 한다. 2. 장애물을 피한다. 3. 도착 지점까지 도달한다. 의 큰 틀이 존재하며 1. 플레이어가 낙하를 한다. - 시작시 아래 낙하지점이 보이며 발판 위에서 벌벌 떠는 플레이어가 보인다. - 터치 & 클릭을 하면 아래 발판이 사라짐과 동시에 점프를 뛴다. 2. 장애물을 피한다. - 장애물에 맞으면 ragdoll상태로 변하며 재시작 UI가 뜬다. - 장애물에는 이동하는 장애물, 멈춰있는 장애물, 시각적 효과(착시, 알..
-
방향성
안녕하세요. 오랜만에 글을 올리게 되었습니다. 그간 많다면 많고 적다면 적은 일들이 있었습니다. 처음으로 "Mac"을 사용하면서.. "Window"환경에서 몸과 손에 익었던 단축키들이 달라져서 "적응"을 하는데 오랜 시간이 걸리진 않았지만, 처음에는 다소 어려운 점이 있었죠.. 또한 "Notion"과 "Slack"을 사용하면서 업무 일지를 작성하고 공유하며 진행 상황을 모도과 공유하며 보다 체계적으로 업무를 진행할 수 있고, 또한 댓글과 같은 글들로 피드백을 받을 수 있었습니다. 개발을 함에 있어서는 "모작"을 완성해 보았었는데, 무언가를 따라 한다는게 쉬운 줄 알았는데 그 사이에 있는 (세밀함과 페이크 물리 등..) 숨어져 있는 기능들 같은 부분들이 어렵게 다가왔었죠. 또한 기획과 레퍼런스 영상을 참고..
-
CPI - Cost Per Install
안녕하세요 오늘은 CPI (Cost Per Install)에 대해서 기억하고자 글을 작성하게 됐습니다. 얼핏 들을 기회가 생겼었는데, 무엇인지 궁금하여 작성하게 됐으며. 우선 간략하게 정리하자면 설치 건당 광고비 지불방식이라고 보시면 되는데요. 마케팅 기초 용어라고 합니다. CPI광고비 = 설치수 * CPI금액으로 CPI가 만일 100 원이고 100명이 앱을 설치하게 되면 100 * 100 = 10,000으로 총 10,000의 광고비가 들게 되는 것입니다. 이와 비슷하게 CPA라는 용어도 있는데 CPA ( Cost Per Action)은 액션당 지급해야 하는 비용으로 광고주가 회원가입이나, 특정한 행동, 장바구니 담기 등 과 같은 해당 목표를 달성했을 때 광고비를 지급하는 방식이라고 합니다. CPA가 특..
-
Unity - Main Camera - Inspector
안녕하세요. 이 카테고리에서는 개발 상식에 대해 제가 기억하고 또한, 학습하기 위한 글들을 올릴 예정입니다. Unity 프로젝트를 처음 생성하면 Hierarchy에 Main Camera와 Directional Light가 생성 됩니다. 처음 생성할 때 기본적으로 필요한 것을 생성해 주는 것으로 Main Camera는 Game View의 모습을 보여 주며 Directional Light는 조명을 담당한다고 간략하게 알고 작업을 해왔습니다. 하지만, Main Camera의 Inspector 상의 옵션들의 명칭만 듣고 무엇을 사용하는 기능인가?라는 질문을 들었을 시 정말로 머리가 새하얘 졌습니다. 오늘은 Main Camera와 Directional Light 중 Main Camera의 Inspector 창의 ..
-
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 깃허브를 사용한 팀업 프로젝트
이 카테고리에서는 게임 제작할 땐 여려 명의 개발자가 함께 함께 할 때 사용되는 깃허브 사용법과 (제가 기억하기 위해서) 깃허브를 사용한 팀업 프로젝트 파일의 일지들을 올릴것 입니다. 대게 개발자들 사이에서의 초기 이슈는 프로젝트 어떻게 공유 & 통합할 것인가 하는데요 제가 팀업 프로젝트를 진행하면서 했던 방식은 콜라보 / 플라스틱 방법이 있습니다. 서로 초대를 받아 유니티 엔진 자체 내에서 푸시 및 다운로드하기를 하며 서로 공유를 했었는데요. 가장 기본적인 문제가 작업한 내용 오류를 찾는 게 힘들었습니다. 별 다른 수정을 안 했는데도 오류가 나는가 반면.. 이 오류를 찾지 못해서 여태 했던 작업들을 다른 곳에 옮겨두고 상대방이 올린 파일을 받은 뒤 제 파일을 다시 옮기거나 삭제 및 수정을 하는 일이 간..
-
01. Hyo LappyBird
안녕하세요! 이 카테고리에서는 앱 출시 및 광고 부분을 목적으로 모바일 플랫폼 환경에 대해 학습을 할 예정입니다. Unity환경에서 조금씩 제작만 해 보았지 구글 플레이에 출시를 해본다고 생각을 못해 봤는데, 우연히 필요 기능 구현 코드를 찾아보다가 구글에 출시를 해보면 어떨까..? 하는 호기심이 생기게 되었습니다. 현재는 심사? 를 기다리고 있으며 약 7일 이내에 보편적으로 된다고 합니다. 오늘(2022-06-20) 두근두근... 불안하기도 하고 기대되기도 하고 뭔가 감정이 미묘합니다. 게임은 간단합니다. flappybird 게임을 모작 한 프로젝트로 학습 영상 에서의 코드 외에 추가를 해볼 구현 동작들이 생각이 났지만 앱 출시 및 +광고 기능을 사용해 보는 목적으로 보다 빨리 출시하고 싶은 마음이 앞..
-
2D.MetalSlug 08. NPC
안녕하세요. 00 : 34초 오랜만에 MetalSlug 프로젝트를 담아 보려고 왔습니다. 현재는 포로 npc를 구현해 보고 있으며 영상을 보면서 조금씩 따라 해 보면서 구현해 보고 있습니다. 포로 제작과 적 제작을 완료 후 배치를 하는 글과 부서지는 건물 및 보스를 제작하는 글 총 2개의 글로 MetalSlug 1단계 플레이 영상은 마무리될 것 같습니다. 이 프로젝트를 다루면서 느낀 점은.. 첫번째로 정리입니다. Animation 클립들이 몇 개 안될 때는 쉽게 찾을 수 있었지만 하나 둘 계속 늘어가다 보니, 수정 및 확인할 때 이 클립이 무엇이었는지 바로 확인하기가 어려운 점이 있었습니다. 했던 작업을 다시 하며 정리를 하고 있습니다.. 두 번째는 코드 작성할 때 한번 더 생각하자입니다. 역량이 부족하..
-
P.P.P - 03 - UI
안녕하세요! 요즘 정말 정신이 없습니다. 사실 프로그래머스 사이트의 코딩 테스트 연습 문제에 재미를 들려서 아직은 Level 1 단계들을 풀어보고 있지만, 문제를 풀어 보며 다른 분들의 푼 과정을 보고 같은 동작을 하는 코드라도 보다 간결하게, 훨씬 빠르게 풀 수 있는 것을 보며 많이 학습을 하고 있습니다. Unity 프로젝트를 진행하면서 안쓰던 문법들과 또한 다양한 방식들이 존재하니 지루할 틈이 없습니다. 00 : 31초 오늘은 영상 부터 준비했습니다. 옆에 좀비는 플레이어를 쫓아오게 오며 일반 공격을 맞을 시 뒤로 밀려나게 되며 스킬을 맞게 되면 hp감소와 스킬에 따른 동작을 구현하려고 유니티 에셋 스토어에서 다운로드하여 가져왔습니다. 이 Move와 Atk를 알려주는 Sprite 들은 혹시 몰라 레이..
-
P.P.P - 02 - 포스트 프로세싱 설정
안녕하세요! 오늘은 지난번에 학습한 내용을 연습할 겸 포스트 프로세싱작업과 생성되는 Profile을 이용해 Global Volume으로 분위기를 연출한 작업을 살펴보겠습니다. 코드로 구현된 작업은 없으며 엔진 툴을 다루는 연습으로 하나씩 만져 보며 값을 직접 조절해 보았습니다. (매우 흥미롭고 시간 가는 줄 몰랐던 것 같습니다.) https://userkhk.tistory.com/75 P.P.P - 01 - 이동구현 안녕하세요. Photon Projent Particle 를 따서 P. P. P의 제목을 지어 봤습니다. (임시로 지은 글의 제목이며 아직 게임 타이틀 명은 못정했습니다) 포톤 클라우드에 앞서 플레이어의 이동 구현을 스크립 userkhk.tistory.com 위의 캡처 이미지는 현재 플레이어의..