본문 바로가기

반응형

전체 글

(62)
3 - 블록 색상값을 enum으로 지정하기 만드려는 게임의 기본 시스템은 이러합니다. 모든 블록들은 랜덤한 색상값을 갖고, 플레이어의 블록 아래에 플레이어와 같은 색상값을 가진 블록이 있다면 아래의 블록은 사라지고 플레이어의 블록은 밑으로 떨어집니다. 그렇다면 블록 오브젝트마다 색상값을 지정해줘야합니다. int로 지정해줘도 되고, string으로 지정해줘도 되지만 enum(열거형)으로 설정하려고 합니다. int에 비해 가독성도 좋고, string에 비해 오타가 발생할 일도 없으며, 인스펙터상에서 드롭다운으로 값을 지정해줄수 있습니다! enum을 설정하는 방법은 아래와 같습니다. public enum BlockColor { Blue, Red, Pink, Green, White } enum 타입은 첫번째 값부터 0에 대응되고, 순서에 따라 1씩 증가..
Scene 변경시 이벤트 호출 유니티에서 Scene을 변경할때 특정한 동작을 실행하고 싶을때, Load 또는 Unload시의 이벤트를 추가하는것으로 구현할 수 있습니다. 다음은 Scene이 변경될때 이전 Scene과 변경되는 Scene의 이름을 저장하는 클래스입니다. public static class LoadSceneManager { public static string previousSceneName; public static string currentSceneName; //앱 시작시 임의의 클래스에서 LoadSceneManager.Initialize()를 호출해야 각 이벤트들이 추가됩니다. public static void Initialize() { SceneManager.sceneLoaded += LoadSceneEvent; ..
Scene 이동시 이전 씬의 정보 저장 이전 씬의 정보를 저장하는 방법은 크게 2가지가 있는데요. 1. Static Class에 저장 사실 이전 씬의 정보를 저장한다기보단 메모리에 저장되있기때문에 Scene을 변경해도 클래스가 사라지지 않습니다. 다만 MonoBehaviour를 상속받을 수 없고, 씬 안의 오브젝트를 제어할 수 없기 때문에 어느정도 제약이 있습니다. public static class StaticClass { public const float StaticValue = 1.0f; public string StaticString; } 2. DontDestroyOnLoad() 사용 DontDestroyOnLoad()는 본인 클래스와 본인 클래스가 컴포넌트로 추가된 게임 오브젝트를 씬 전환시에도 사라지지 않도록 합니다. public ..
2 - DoTween.onComplete 블록이 이동된 후에 블록의 현재 상태를 나타내는 Index값이 변경되어야 하는데, 블록은 위치가 한 프레임만에 변하지 않고, DoTween으로 구현한 애니메이션을 통해 위치를 이동합니다. 따라서 DoTween을 통한 오브젝트 이동이 완료된 시점에 index값을 변경해주어야 하는데, OnComplete로 구현했습니다. OnComplete를 사용하면 DoTween애니메이션이 종료된 이후에 특정 코드를 실행하려고 할때 유용합니다. transform.DOLocalMoveX(destinationX, GeneralBlockSetting.PlayerBlockMoveSpeedX).SetEase(Ease.Linear) .OnComplete(() => gameManager.SetBlockPosition(index));
Unity에서 사용 가능한 C# BezierCurves 일반화 함수 사용되는 변수들 public GameObject torpedo; public List transformList; private List vectorsList; public float speed; torpedo : 곡선을 따라 움직일 오브젝트 transformList : 베지어 곡선의 point 오브젝트들 vectorsList : point 오브젝트들의 transform.position 값들 speed : 오브젝트의 속도 베지어 커브 계산 함수 private static Vector3 Bezier(List points, float value) { List step1 = points.ToList(); int pastTemp = 0; for(int i = 1; i < points.Count; i++) { va..
1 - Transform.Translate & Dotween으로 기본 움직임 설정 첫번째로 구현할 내용은 1. 일반 블록이 아래에서 위로 올라옴. 2. playable 블록도 아래에서 위로 올라가되, 버튼 클릭에 따라 좌우 이동 가능 입니다. 블록 오브젝트들을 제어할때 사용하는 상수들은 GeneralBlockSetting 클래스에 static으로 선언했습니다. public static class GeneralBlockSetting { public const float TravelDuration = 10f; public const float BlockSpeed = 0.001f; public const float PlayerBlockMoveSpeedX = 0.5f; public const int BlockBasePositionX = -375; public const int BlockSiz..

반응형