목록Develop Study/Unity (46)
Araina’s Blog
출처 Unity - 스크립팅 API: MonoBehaviour.Awake() Awake는 게임이 시작되기 전에, 모든 변수와 게임의 상태를 초기화하기 위해서 호출됩니다. 스크립트 인스턴스가 종료될 때까지 한번만 호출됩니다. Awake는 모든 오브젝트가 초기화되고 호출되기 docs.unity3d.com 1. 속도 경쟁 Start()와 Awake()의 속도를 비교하면 Awake() > Start()라는 말을 여럿 들어보았다. Start()는 Update() 호출 이전 단계에 1회 호출되고, Awake()는 스크립트 인스턴스가 로딩될 때 호출된다. 유니티 공식 도큐먼트에 따르면, Awake는 게임이 시작되기 이전, 모든 변수와 게임의 상태 초기화를 위해 호출된다고 한다. 간략히 순서를 표현하자면, 스크립트 인..
1. 게임은 트릭 쿠키런을 비롯한 횡스크롤 달리기 게임들은 유독 '게임은 트릭'이라는 말이 자주 떠오르는 장르이다. 무한히 생성되는 오브젝트, 무릎 관절이 걱정되는 주인공 캐릭터, 끝도 없이 스크롤되며 멀미를 절로 유발하는 배경화면까지. 이 장르의 게임은 만들기도 쉽고, 플레이하기도 간단해서 튜토리얼에서 자주 사용되는 장르인 것 같다. 뭐, 아무튼. 이게 중요한 게 아니고. 지금 말하고자 하는 부분은 배경화면을 무한히 스크롤하게 만드는 부분에 대한 것이다. 그것도 Collider를 이용해서 말이지. 2. Collider의 사이즈를 가져올 수 있다. 유니티 3년 공부하면서 이건 첨 알았다... GetComponent를 이용해 Collider를 가져온 뒤, .size를 붙여주면 된다. repeatWidth ..
8일차 - White 탄환 기본 기능 구현 완료 (RGB에 상관없이 모든 적 섬멸 가능) - White 탄환 아이템 획득 시 10초 타이머 적용 (10초 간 White 탄환 사용 가능) - White 탄환 아이템을 획득할 때마다 10초 타이머 리셋 기능 적용 RGB 게임의 난이도 조정 필요 (기존의 룰 수정 계획 미완료) 경직 애니메이션의 빈도가 다른 적과 충돌하는 것에 따라 중복 적용되는 문제 발생 (원인 분석 필요) White 탄환의 타이머 종료를 어떻게 표현할 것인가? (타이머 UI 추가 or 플레이어의 색상 임의 변경)
7일차 - 소스 코드 최적화 - White 탄환 아이템 제작 - 아이템 애니메이션 적용 RGB 룰 수정: 게임 난이도 하향 조정 필요 (대미지 조건 또는 적 종류 수정) White 탄환 아이템 등장 조건 조정 필요: 랜덤 스폰(시간제 형식) or 적 처치 후 등장 택1 White 탄환 아이템 애니메이션 조정 필요: 애니메이션 효과가 눈에 들어오지 않는 문제 해결 필요
지정된 범위 내에 게임 오브젝트를 랜덤 좌표에 생성해야 할 경우, 1) 생성 범위를 X좌표, Y좌표를 분리하여 Random.Range()를 이용해 변수에 담는다. 2) Random.Range()를 통해 생성된 X난수, Y난수를 Vector 변수에 담는다. 3) Instantiate()를 이용해 복제한 게임 오브젝트를 Vector 변수에 담은 좌표에 생성한다. 자세한 것은 아래 코드 참고. 1 2 3 4 5 6 7 8 9 10 11 12 13 // Enemy Random Spawn RandomX = UnityEngine.Random.Range(-24, 35); RandomY = UnityEngine.Random.Range(24, -5); RandomPos = new Vector2(RandomX, Rando..
6일차 - 적이 벽을 뚫고 움직일 수 있는 문제 수정 - 적과 아이템이 랜덤 스폰될 때 맵을 벗어나 스폰되는 문제 수정 - 데미지를 입거나 HP 아이템을 먹을 경우 경직 애니메이션이 발생하도록 구현 - 데미지를 입을 경우 무적 시간이 적용되도록 수정 - 아이템 소멸 타이머 구현 - 경직 애니메이션 알파 값 수정 (알파 값이 255로 복구되지 않던 문제 해결) - 아이템 획득 시에도 경직 애니메이션이 적용되지 않도록 수정 - HP 게이지가 MAX일 때, HP 아이템을 획득할 수 없도록 수정
0일차 - 게임 기획서 작성 - 기본 게임 오브젝트 제작 1일차 ~ 2일차 - 플레이어 움직임 구현 - 맵 생성 - 적 오브젝트 생성 및 추격 기능 구현 - 총알 발사 구현 - 마우스 휠로 플레이어의 총알 변경 기능 구현 - 탄환 색상에 맞춰 적 오브젝트 색상 변경 3일차 - 마스킹 기능으로 HP GUI 기능 구현 - 적 랜덤 스폰 구현 - 적 소멸 구현 - 플레이어가 움직일 때마다 떨림이 발생하는 문제 수정 4일차 - HP 아이템 제작 - R 탄환이 제대로 발사되지 않는 문제 수정 - 소스 코드 일부 최적화
1 UIHealthBar.instance.SetValue(CurrentLife / (float)MaxLife); cs 위의 코드에서 CurrentLife와 MaxLife 모두 int형 변수이다. UIHealthBar.instance.SetValue() 코드는 게임 상에 구현한 체력 게이지 UI에 사용된 체력 표시 바의 길이를 조절하기 위한 코드이다. 헌데, 코드를 다시 보면 MaxLife 변수를 임의적으로 float 형태로 변환하고 있는데, 이로 인해 계산 방식이 (int / float) 형태로 바뀌게 된다. 이는 int와 float의 표현 방식의 차이 때문이다. 그럼 먼저, (int / int) 형태로 계산했을 경우를 생각해보자. CurrentLife를 2로, MaxLife를 4라고 가정한 뒤, 계산을..