전체 글70 [유니티] Mathf.Log 함수와 레벨당 증가량 계산 Mathf.Log(x, y) 는 y를 밑으로 한 x의 로그 값을 반환하는 함수다.로그 함수의 특징 중 하나는 log(x)에서 x는 반드시 양수여야 한다는 점이다. (x > 0)따라서 x = 0 일 때 작동하지 않으므로, x + 1로 최소값을 보장할 수 있다. Mathf.Log 함수 1. 경험치 시스템 로그를 사용하면 레벨이 올라갈수록 경험치 요구량이 점차 느리게 증가한다.예를 들어 1레벨에서는 100, 3레벨에서는 200, 7레벨에서는 300이 필요하다.레벨이 높아져도 요구량이 미미하게 증가하기 때문에,만렙이 높고 꾸준히 성장감을 주는 게임에 적합할 것이다. 2. UI 크기 조정 로그 정규화를 통해 값의 변화를 부드럽게 처리할 수 있다.UI 크기 조정에 활용하면 값이 클수록 변화가 적게 느껴지는 비율.. 2025. 1. 24. [유니티] #10 광부 타이쿤 게임 만들기 (업그레이드 패널) 이제 업그레이드 패널을 만들어볼 차례다.새로운 Canvas를 만들고 안에 Image로 UpgradePanel을 만들어 크기와 색깔을 변경했다.그 안에 Top으로 앵커 위치를 맞춰주고, Button을 Set Native Size로 원본 이미지와 같은 크기로 만들었다. Button 안에 Image를 만들어 X 이미지를 넣었다.버튼 크기를 조정해주고 Top의 색깔도 바꿔줬다. Top 안에 텍스트를 넣고 예시로 글을 작성했다.사이즈는 45, 가운데 정렬, 래핑 없음으로 설정한다. UpgradePanel 안에 Image로 MinerIcon과 StatsContainer를 넣는다.알파값을 100으로 해서 약간 투명해지게 했다.추가로 Vertical Layout Group 컴포넌트를 넣는다. StatsC.. 2025. 1. 23. [유니티] #9 광부 타이쿤 게임 만들기 (창고 광부, 로딩바) 창고 광부의 Idle, WalkingNoGold 애니메이션을 만들었다.Idle은 고개와 오른발을 까딱까딱하도록 했다.WalkingNoGold는 카트에 골드 없이 걷는 동작만 만들었다. 골드 없이 걷는 애니메이션을 복사하고 Animator로 가서 드래그한다.이렇게 하면 똑같은 애니메이션을 복제하여 일부만 수정할 수 있다. Gold 오브젝트를 ShopCart 안에 넣고 비활성화 상태로 둔 후WalkingWithGold 애니메이션에 Is Active를 추가하고 체크해 두면 된다. 애니메이션 파라미터를 Bool 타입으로 WalkingNoGold, WalkingWithGold를 만든다.MakeTransition을 통해 Idle과 Walking을 연결한다.Exit Time 등은 0으로 하고 Fixed D.. 2025. 1. 20. [유니티] #8 광부 타이쿤 게임 만들기 (버그 수정, 창고) 엘리베이터 광부의 저장 용량이 꽉 찼거나 마지막 샤프트에 도착하면 입금 위치로 이동하고,아닐 경우엔 계속 다음 샤프트로 이동하도록 한다.마지막 샤프트에 도달했을 때가 금을 수집하는 로직 아래 있기 때문에 수집하고 이동할 것이다. BaseMiner에 IEDeposit을 추가한다.샤프트 광부는 입금하고 바로 이동했기에 필요 없었지만 엘리베이터 광부는 입금하는데 시간을 들일 생각이다.ElevatorMiner 스크립트에서 오버라이드 하기 위해 빈 상태로 둔다. 엘리베이터 광부가 금을 입금하는 DepositGold 함수와 코루틴 함수를 만든다.입금 위치로 올라갔는데 입금할 금이 없으면 다시 수집을 시작하고,있으면 코루틴을 통해 입금하고 수집을 시작하는 순서이다. 엘리베이터 광부가 가지고 있는 코인을 U.. 2025. 1. 20. [유니티] #7 광부 타이쿤 게임 만들기 (제너럴 싱글톤, 엘리베이터) 새로운 Singleton 스크립트를 만들어서 제네릭 싱글톤 패턴을 구현한다.외부에서 임의로 변경하거나 초기화하지 못하게 프로퍼티를 이용해 instance를 반환한다. 제네릭 싱글톤은 상속을 통해 확장되도록 설계되었다.Awake 메서드는 싱글톤 초기화와 관련된 중요한 작업을 수행하므로,외부로부터 보호하는 대신 상속받은 클래스에서는 사용할 수 있도록 protected로 설정한다.또한 상속받은 클래스에서 초기화 과정을 확장하거나 수정할 수 있도록 virtual로 설정한다. this as T를 사용하는 이유는 현재 객체를 T로 형변환하여 instance에 저장하려는 것이다. 이제 제네릭 싱글톤을 만들었으니 스크립트로 가서 교체한다.기존 인스턴스를 지우고 Singleton 스크립트를 상속받으면 된다.다른 스크.. 2025. 1. 18. [유니티] #6 광부 타이쿤 게임 만들기 (싱글톤, 골드매니저) 새로운 스크립트 GoldManager를 만들고 변수를 선언한다.readonly는 읽기 전용이라는 뜻으로 초기화된 값을 변경할 수는 없지만 읽어올 수는 있다. 비슷한 개념으로 const는 컴파일 타임에 값을 초기화하고 readonly는 런타임에 값을 초기화할 수 있다. CurrentGold를 +, - 하는 함수를 추가한다.PlayerPrefs는 픽셀 2D Run 게임 만들기에서도 사용했던 클래스다.플레이어의 디바이스에 게임 데이터를 저장하고 로드할 수 있다. 보안이 취약하기 때문에 대규모 데이터나 중요한 데이터를 저장하는 데에는 부적합하지만사용하는 방법이 간편하기에 여기서는 일단 쓰기로 한다. SetInt를 통해 저장한 값을 GetInt로 가져오고 Start 메서드에서 호출한다. 싱글톤 패턴을 .. 2025. 1. 17. [유니티] #5 광부 타이쿤 게임 만들기 (업그레이드, 델리게이트) 광부의 이동 속도, 수집 속도 및 정리 용량을 업그레이드 하기 위한 배수가 필요하다.부모 스크립트로 BaseUpgrade 스크립트를 만든다.SerializeField를 사용해 private로 변수를 선언했다. Start 메서드에서 CurrentLevel을 1로 설정한다.UpgradeCost는 private로 선언된 initialUpgradeCost를 외부에서 사용하고 업데이트 하기 위한 프로퍼티다.그외 virtual로 Base가 될 함수를 선언한다. Shaft 스크립트를 참조하기 위한 변수를 선언한다.자식 스크립트에서도 사용하기 위해 protected로 선언했다. 새로운 ShaftUpgrade 스크립트를 만들고 BaseUpgrade 스크립트를 상속 받는다.RunUpgrade 함수를 오버라이드 .. 2025. 1. 16. [유니티] #4 광부 타이쿤 게임 만들기 (상자, UI) 새로운 Deposit 스크립트를 생성한다.프로퍼티로 CurrentGold를 선언하고 DepositGold, RemoveGold 함수를 선언한다.각각 매개변수로 amount를 받아서 +, - 하는 함수다. Shaft 스크립트에 SerializeField로 depositPrefab 변수를 추가하여 인스펙터에서 입금을 할 것이다. Boxes 스프라이트를 Multiple로 바꾸고 Automatic으로 Slice 한다. 씬에 상자를 배치하고 ShaftDeposit으로 이름 변경했다.Deposit 스크립트를 추가하고 프리팹으로 만든다. 상자를 생성할 장소 depositInstantiationPos를 변수로 선언한다.CreateDeposit 함수를 만들고 Instantiate로 상자를 생성한다. 프.. 2025. 1. 14. [유니티] #3 광부 타이쿤 게임 만들기 (애니메이터, 프로퍼티) 이제 애니메이션을 만들어볼 차례다.광부가 땅을 파고 다시 돌아올 때는 좌우반전이 일어나야 하는데위의 사진과 같이 Filp X에 체크하면 삽을 빼고 캐릭터만 좌우반전 하게 된다.부모와 자식이 같이 회전하려면 Scale의 X값을 -1로 바꿔야 한다. BaseMiner 스크립트에 RotateMiner 함수를 선언한다.direction이 1이라면 원래대로 오른쪽을 보고, 1이 아니라면 좌우반전하여 왼쪽을 보게 된다. 선언한 RotateMiner 함수를 코루틴과 DepositGold 함수에 추가한다. 기본 애니메이션은 Idle로 지정하고 Any State에서 Mining와 Walking 애니메이션으로 연결한다.파라미터로 Trigger를 추가해 Mining과 Walking을 만든다. Mining과 W.. 2025. 1. 13. 이전 1 2 3 4 5 6 7 8 다음 728x90