데이터를 저장할 수 있는 공간, 프로그램 안에서 어떤 값을 담아두고 필요할 때 꺼내서 쓰는 이름이 붙은 저장공간이다.숫자로 시작하면 안 된다 (ex: 2age)띄어쓰기 대신 카멜표기법 또는 언더바 사용 (ex: userName, user_name)대소문자 구분 (Ag
if문은 조건을 체크해서 만족하면 중괄호 안에 있는 내용을 실행시키고,조건이 맞지 않으면 실행하지 않는다예제if 문의 조건이 만족하지 않을때, 다른 조건을 추가로 검사할 때 사용한다예제if문과 else if문이 모두 만족하지 않을때 실행된다예제하나의 값을 여러 경우(c
배열이란 여러 데이터를 한가지 변수에 저장하는 기능각각의 값은 인덱스를 통해 접근할 수 있다인덱스는 0부터 시작위에 저장된 game배열을 Console.WriteLine()을 이용해 출력문자열 배열 말고도 타입에 맞는 배열들을 생성할 수 있다위와 같이 for 반복문을
함수는 특정 작업을 수행하는 코드 블록이다위와 같이 이미 정의된 함수들이 있으며, 필요할 때 호출해서 쉽게 사용할 수 있다정의된 함수가 없을 경우, 원하는 기능을 가진 함수를 직접 만들수도 있다함수 이름은 자유롭게 정할 수 있지만, 이름만 보고 어떤 기능을 수행하는지
OOP, 즉 객체지향 프로그래밍은 프로그램을 객체 중심으로 구성하고, 객체 간의 상호작용으로 프로그램을 만드는 방식이다캡슐화데이터와 코드를 외부에서 알 수 없게 감추는 것외부에서는 필요한 정보만 알면 된다추상화객체들의 공통적인 특징은 추려내는 것상속하위 클래스가 상위
MMORPG로스트아크의 군단장레이드는 일정 체력 도달시 특정 패턴을 발동하거나 레이드 시간에 따라서 패턴을 발동하는 것을 기본으로 한다여러 기믹중에서 쿠크세이튼 레이드의 3관문 미니게임에 대해 다뤄볼 생각이다쿠크세이튼의 체력이 일정 이하로 도달하면, 맵 중앙에 별 모양
GameObject와 Component의 개념캐릭터 움직이기스크립트로 컴포넌트 제어하기충돌 처리오브젝트 자동 생성Unity에서 Scene에 존재하는 모든것의 기본 단위캐릭터몬스터배경UI 버튼GameObject에 붙여서 기능을 부여하는 부품SpriteRenderer ->
마우스 포인터로 움직이기최고 점수 구현하기제시작 버튼 만들기ScreenToWorldPoint는 스크린 좌표를 실제 게임 속 좌표로 변환해준다PlayerPref는 로컬에 간단한 데이터를 저장할 수 있는 유니티 내장 클래스SceneManager는 Unity에서 씬을 관리하
게이지 채우기, 오브젝트 교체레벨 시스템Make Cat() 함수를 이용해서 레벨이 오를수록 새로운 고양이 종류가 등장한다이전 강의에서 배운 내용들이 점점 익숙해지고, 레벨업 시스템까지 구현해보니 게임의 완성도가 조금은 올라간 걸 느꼇다.덕분에 게임 개발에 흥미가 더 붙
반복문을 이용한 2차원 배열배열의 랜덤 정렬스크립트를 이용해 이미지 가져오기$ 기호를 사용하면 문자열 안에 변수를 바로 넣을 수 있다이번 강의는 코드 중심의 내용이 많아서 이전보다 로직적으로 복잡한 부분이 있었고, 그만큼 처음엔 조금 헷갈리는 부분도 있었다.하지만 구현
이번 학습에서는 지난 강의에서 만들어본 르탄이 카드 뒤집기 게임을 바탕으로,그동안 배운 개념들을 활용해 몇 가지 기능을 추가해보았다.난이도 선택난이도별 최고점수 기록최고 점수 초기화 기능난이도 선택 시 PlayerPrefs에 선택한 레벨 저장, 게임 씬에서 해당 레벨에
리그오브레전드MOBA, AOS아타칸게임 시작 후 14분 이전 게임의 교전 상태에 따른 생성되는 아타칸의 종류가 결정교전이 빈번하게 일어났을시 -> 파멸의 아타칸 생성교전이 드물게 일어났을시 -> 탐식의 아타칸 생성14분 이전 교전이 많이 일어난 위치에 따른 생성위치 (
컬렉션(Collection)은 자료를 모아 놓은 데이터 구조이다.단순히 값을 저장뿐 아니라 추가, 삭제, 검색 등의 작업을 수행할 수 있도록 다양한 메서드와 속성을 제공한다.배열과 비슷한 자료 구조크기가 가변적C- 사용하기 위해서는 System.Collections.G
클래스와 구조체는 C둘은 매우 비슷해 보이지만, 메모리 할당과 동작 방식에서 차이를 가진다.간단하게 둘의 차이와 언제 사용하는지 알아보도록 하자클래스는 객체의 참조를 저장하며, 변수간에 주소를 공유해서 같은 객체를 참조구조체는 값 그 자체를 저장하고, 변수간에 값을 복
오버로딩과 오버라이딩은 이름은 비슷하지만 완전히 다른 개념이다.아래에서 간단하게 구분하고, 차이점을 정리해보자같은 이름의 메서드를 매개변수의 수나 타입을 다르게 해서 여러 개 정의하는 것같은 동작을 매개변수만을 다르게 해서 약간 다르게 동작이 가능하다.코드 가독성 향상
C이 두 개념을 간단하게 정리해서 이해해보자.생성자는 클래스의 인스턴스를 생성할 때 자동으로 호출되는 메서드로 주로 멤버 변수를 초기화할 때 사용한다클래스와 이름이 동일하다반환형이 없다오버로딩이 가능하다클래스와 동일한 이름이며, 반환형(void 도 안붙는다)이 없고 오
인터페이스는 객체 지향 프로그래밍의 핵심 개념 중 하나이다.인터페이스는 클래스와 비슷하지만 클래스가 반드시 구현해야 할 메서드들의 이름만 선언해둔 설계 명세서 같은 느낌이고, 실제 로직들은 인터페이스를 구현하는 클래스에서 작성하게되며, 클래스 간의 다형성을 구현할 수

팀원들과 함께 TextRPG를 만드는 프로젝트를 진행 중이다.일단 오늘은 와이어프레임을 구성하는 것을 목표로 하고 역할을 나누어 개발한 내용을 합치기로 했다.와이어 프레임은 IT 서비스를 개발할 때 기획단계에서 작성하는 설계도이다.서비스에서 작동하는 화면의 구조와 기능

이전 게시글에 이어서 TextRPG 구조를 팀원들과 구성한뒤 역할을 나누었는데 내가 맡은 역할은 게임에서 몬스터와 전투를 치르게 되는 전투시스템을 맡게 되었다.Battle() : 전투 루프 시작PlayerTurn() : 사용자 입력으로 몬스터 타겟 지정AttackRes
이전 게시글에 이어서 TextRPG의 전투 시스템에 회피기능을 추가해보았다.특별히 복잡한 구조가 아니여서 회피기능은 치명타 기능과 유사한 방식으로 구현할 수 있었다.반환값 튜플에 isMiss(회피여부)를 추가회피 시에는 공격이 무효되도록 처리PlayerAttack에서
팀프로젝트 발표를 위해 발표자료를 넘겨줘야해서 구현한 TextRPG의 전투 시스템을 구조 정리를 해보았다.while 루프를 이용해 플레이어 체력 > 0 && 몬스터 중 한 마리라도 살아있을 경우 전투매 턴마다 PlayerTurn() -> MonsterTurn() 순으로
유니티 입문 과정을 배우면서 Vector3라는 개념이 자주 등장했다.이번 기회에 Vector3에 대해 정리하고 넘어가야겠다Vector3는 3차원 공간에서의 방향과 크기를 나타내는 구조체이다.유니티에서 위치, 방향, 속도 같은 걸 표현할 때 거의 무조건 Vector3를
Unity로 UI 시스템을 짜다보면 virtual이랑 abstract를 동시에 사용하는 경우가 있다.실제 Unity 코드에서 상속을 활용해 UI를 구성할 때 이 두 가지가 어떤 역할을 하고 왜 사용하는지 한번 정리해보자.virtual 은 기본 구현이 없고, 반드시 자식
Unity에서 UIState라는 enum을 사용해 UI 상태를 관리하던 중, 아무런 상태 설정을 하지 않았음에도 UIManager.currentState가 Talk으로 시작되는 문제가 발생했다.배경UIManager는 UIState 열거형(enum)을 사용해 현재 UI
이번 강의에서는 3D 게임 개발의 기본 요소들을 이해하는 것을 목표로 한다.스카이박스로 3D 환경의 배경 만들기Rigidbody ForceMode로 다양한 물리 효과 제어Ray와 Raycast로 상호작용 및 Input System의 이벤트 처리 방식 이해이러한 요소들은
Rigidbody 기반 플레이어 이동마우스 입력, 카메라 회전Raycast로 착지 판정transform.forward, transform.right를 이용해 방향 벡터 계산Rigidbody.velocity에 직접 속도 할당하여 부드러운 물리 이동InputAction.C
트리거 감지와 Rigidbody 판별Vector3.MoveTowards로 부드러운 위치 이동발판 위 오브젝트 이동 처리플레이어가 발판 위로 올라오면, 발판이 일정 위치까지 이동하고, 내려가면 다시 원위치로 돌아가는 시스템Update()에서 매 프레임 startPoint
CapsuleCast로 벽을 감지하고 벽에 닿았을 때 중력을 꺼서 매달림 상태 유지WallMove()로 입력으로 벽을 타고 이동 가능하며, 지속적으로 스태미나를 소비벽이 사라지거나 스태미나가 부족하면 StopWallCling()으로 중력 복구 + 위쪽 속도 제거플레이어
3D 퍼즐 플랫폼 게임이라는 주제로 팀 프로젝트를 진행하게 되었고, 팀원들과 상의 끝에 대표적인 사례인 Valve의 Portal을 구현해보기로 결정했다.나는 그중 포탈 기능을 맡게 되었는데, 게임을 해본 경험이 없었기 때문에 어떻게 구현할 수 있을지 자료를 찾아보며 분
Cinemachine은 Unity 엔진 안에서의 가상 카메라 시스템. 기존의 카메라보다 더 직관적이고, 강력한 제어 기능을 제공하며, 코딩 한 줄 없이도 다양한 상황 연출이 가능하다.플레이어 추적 카메라Virtual Camera 추가 -> Follow에 플레이어 오브젝
a
연산자 오버로딩(Operator Overloading)은 기존 연산자(+, -, \*, / 등)의 기능을 사용자 정의 타입(클래스나 구조체)에 맞게 재정의 하는 것을 의미한다.예를 들어 Unity에서 제공하는 Vector2구조체를 살펴보면위 코드에서 v1 + v2처럼
Unity에서 Excel → JSON → CItem 데이터 구조는 아래와 같았다:엑셀로 만든 데이터는 JSON으로 이렇게 변환된다:Unity 기본 JsonUtility를 사용해서 다음처럼 파싱했지만:Item.type필드가 "Weapon"이나 "Armor"로 올바르게 파
Unity에서 UI 위에 파티클 이펙트를 띄우려 했지만,Canvas → Render Mode: Screen Space - Overlay 상태에선 파티클이 보이지 않음→ Screen Space - Camera로 바꾸니까 정상 출력됨왜 이런 차이가 발생했는지 정확한 원인과