게임 개발 로그

개발 노트 #4 본문

게임 개발/레스토랑 대소동

개발 노트 #4

03:00am 2024. 11. 11. 09:39

 

업무 내용 및 상황 1. 설거지 시스템 UI 추가 (ActionBarUI)
2. 기획에 따른 접시 추가/삭제 기능 수정
3. 기타 오류 수정
문제점 1. 접시 풀링 사용으로 각도가 틀어진 채로 Create 되는 문제 발생 ( 해결 )

2. 빠르게 접시 생성 시 오브젝트 겹치는 문제 발생 ( 해결 )

3. 그릇을 닦는 도중 새로운 설거지가 추가 시 밑에서 차오르도록 요청 ( 해결 )
해결 방식 1. 오브젝트 DeActive 시에 각도 초기화하도록 수정.

2. Corountine 실행 중이라면 접시 생성 안 되도록 수정.
    접시 생성 주기를 0.1초에서 0.2초로 수정.

3. 기존 스택 구조에서 List 로 관리 구조 변경.
이후 진행 사항 TODO.
1. 설거지 기능 관련
  → 인디케이터 속도 조정
  → 그릇의 체력 추가해야 함
  → 실패 시 진동 효과
  → 성공 시 이펙트 등
  → 점수 추가되도록 해야 함

 

 

0. 클래스 재설계

0-1. 변경사항

  • 설거지 오브젝트 관리를 Stack → List 로 변경.
    • 이유: Stack 으로는 밑에서 쌓아올리는 것과 위치상 최상단 오브젝트를 Pop하기 힘듬.
    • selectPlate라는 변수를 추가하여 최상단 오브젝트가 무엇인지 파악하도록 함. 접시 하나가 삭제될 때마다 SelectPlate() 함수를 실행하여 최상단 오브젝트를 찾음.
  • Plate를 RestaurantObject 상속 받다가 안 받는 형태로 변경.
    • 풀링매니저와 태그 관련하여 지속적으로 수정해야 할 듯!

 

1. 씬 관련

  • SeminScene 과 BeakScene 을 합침.
    • SeminScene 변경사항
      • 배경으로 배치될 Objects들의 뷰를 2D 뷰로 변경함.
      • 폴더 정리 등

 

2. UI 관련

private void Update()
{
	MoveIndicator();
	if (Input.GetKeyDown(KeyCode.Return))
	{
		if (IsWashingSuccess())
			OnSuccessWash?.Invoke(this, EventArgs.Empty);
	}
}

private bool IsWashingSuccess()
{
	RectTransform perfectzoneRect = perfectZone.GetComponent<RectTransform>();
	float indicatorPos = indicatorRect.anchoredPosition.x;
	float min = perfectzoneRect.anchoredPosition.x - perfectzoneRect.sizeDelta.x / 2;
	float max = perfectzoneRect.anchoredPosition.x + perfectzoneRect.sizeDelta.x / 2;
	if (indicatorPos > min && indicatorPos < max)
		return true;
	return false;
}
  • IsWashingSuccess(): 인디케이터와 퍼펙트 존 위치를 비교하여 성공인지 실패인지 반환.
  • 엔터를 누르면 IsWashingSuccess()의 결과에 따라 OnSuccessWash 이벤트를 호출.
  • OnSuccessWash 이벤트를 구독하는 것: WashingArea.cs
    • 설명
	// WashingArea.cs
	private void OnSuccessWashing(object sender, EventArgs events)
	{
		if (RemovePlate())
			SelectPlate();
		else
			Debug.Log("failed remove: plate is empty");
	}
	
	public bool RemovePlate()
	{
		if (plates.Count == 0)
			return false;
		selectPlate.DeActivate();
		platesQueue.Enqueue(selectPlate);
		plates.Remove(selectPlate);
		return true;
	}
​

 

  • 설거지를 성공하면 WashingArea에서 설거지 목록에 보이던 그릇이 사라지도록 이벤트를 구독하고 있음.

 

'게임 개발 > 레스토랑 대소동' 카테고리의 다른 글

개발 노트 #6  (2) 2024.11.19
개발 노트 #5  (2) 2024.11.11
개발 노트 #3  (0) 2024.11.11
개발 노트 #2  (0) 2024.11.11
개발 노트 #1  (0) 2024.11.11