스크립트상에서 아래와 같은 함수를 사용할 때 이진법 숫자 $1$을 레이어 번호만큼 시프팅 해서 사용해야 하는데, 왜 굳이 이렇게 사용하는 걸까요? Physics2D.OverlapCircleAll(this.transform.position, 5.0f, 1
카메라의 사이즈에 딱 맞는 Edge Collider를 만들어주는 코드입니다. 카메라내에 오브젝트가 카메라 밖으로 나가면 안되는 경우 유용합니다. public class CameraEdgeCollider : MonoBehaviour { private EdgeCollider2D ec; private void Awake() { ec = this.GetComponent(); if (ec == null) { ec = this.AddComponent(); } var camera = Camera.main; var lb = (Vector2)camera.ScreenToWorldPoint(new Vector3(0.0f, 0.0f, camera.nearClipPlane)); var lt = (Vector2)camera.Sc..
어떤 아이디어를 가지고 게임을 개발하다 보면, 점점 아이디어가 바뀌게 되는 경우가 있다. 작은 아이디어들이 종종 바뀌는 건 문제가 아니고 오히려 필요한 부분이지만, 게임의 핵심 알고리즘이나 메커니즘 자체가 바뀌어버리는 경우도 있죠. 이 경우 게임을 더 낫게 만들 수도 있지만, 그동안 만들어 온 수많은 코드나 설정들을 바꿔야 하는 일이 생길 수도 있습니다. 이런 일이 자주 생긴다면 게임개발 가능성에 안 좋은 쪽으로 영향을 줄 수 있습니다. 그래서 우리는 게임개발 도중에 길을 잃지 않기 위해 개발 개발 준비를 확실하게 해야합니다. 이 포스팅에서는 대게 솔로/인디 개발자들이 만드는 중/소규모 프로젝트에 적용할 수 있는 게임 개발 준비방법을 설명합니다. 1. GDD(Game Design Document) 먼저 ..
✨ 이 포스팅에서는 적절한 컬러 조합, 하모니를 만드는 방법을 설명한다. 게임을 개발할 때 적절한 컬러조합을 사용하면 게임 좀 더 재미있어 보이기도 하고, 흔히 말하는 쥬시한 느낌을 내는데도 도움을 준다. 적절한 컬러조합을 사용하는 것은 아래와 같은 효과를 준다. 게임의 핵심 메커니즘에 집중하게 할 수 있다 게임오브젝트의 구분을 명확하게 해준다 현재 집중해야 할 것을 플레이어에게 알려준다 적절한 게임 분위기를 연출한다. 1. 컬러 요소(Color Elements) 컬러 요소는 색을 결정하는 요소들을 말한다. 아래의 사진은 유니티엔진에서의 컬러 선택툴이다. 아래 사진 아랫부분을 보면 알파벳 H, S, V 가 보인다. 이 알파벳들은 각각 H(Hue), S(Saturation), V(Value or Light..
Sprite와 Texture는 둘다 이미지다. 하지만 용도에 차이가 있다. Sprite는 2D 오브젝트에 쓰이며 좌표를 가진다. 좌표를 가진다는 말은 움직일 수도있고 인게임내에서 생성되거나 파괴될수있다. Texture는 오브젝트의 외형을 바꾸기위해 사용된다. 예를 들어 큐브면에 Textrue를 설정할수있다. 하지만 Texture는 오브젝트가 아니다. 따라서 게임중 Texture를 움직일 수는 없다.
이 포스팅에서는 객체지향 프로그래밍 원칙으로 유명한 S.O.L.I.D 원칙을 유니티에 적용하여 이해하기 쉽고 유연하며 유지보수가능한 코드구조를 만드는 방법을 설명합니다. SRP(Single Responsibility Principle): 단일 책임 원칙 클래스를 변경해야 할 이유는 오직 한가지여야 한다. 유니티에 이 원칙을 적용시켜보면, 컴포넌트 단위로 생각해볼 수 있다. 즉, 게임 오브젝트는 한가지 목적을 위해 만들어진 여러개의 컴포넌트의 조합으로 구성되어야한다고 할수 있다. 따라서 Player.cs, Enemy.cs 와 같은 목적을 알 수 없는 컴포넌트가 아니라, PlayerInput.cs, Health.cs, WeaponHandler.cs 와 같은 분명한 목적을 가진 컴포넌트를 작성해야 한다는 뜻이..