08/08
- startScene에 멤버카드 이미지로 애니메이션 만들기
- 멤버 카드에 이미지 넣기
gameManager.cs
void Start()
{
string[] membersName = { //멤버이름};
List<string> imageNames = new List<string>();
foreach(string name in membersName)
{
for (int i = 0; i < 2; i++)
imageNames.Add(name + i.ToString());
}
imageNames = imageNames.OrderBy(itme => Random.Range(-1.0f, 1.0f)).ToList();
...
for (int i = 0; i < 16; i++)
{
...
string membersImageName = imageNames[i];
newCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>(membersImageName);
}
}
카드 매칭 성공시 팀원 이름이 뜨게하는 기능 구현을 맡으신 팀원분이 이미지를 이름 + 숫자로 저장해달라고 요청하셔서
그에 맞춰서 코드를 변경하여 카드에 이미지를 넣었다 뭔가 이런 요청 사항이 있는게 정말로 협업을 하고 있구나 라는 생각이 들어서 좋았다
4주차 강의에서 르탄이 이미지를 넣는것과는 다르게 팀원 이름과 숫자를 맞춰야해서 어떻게 짜면 좋을까 생각을 많이 했던거 같다 많은 시행착오 끝에 결국은 list를 만들어서 멤버 이름과 숫자를 넣고 랜덤으로 섞어주었다
- firstCard를 고르고 5초간 카운트 다운 후 secondCard를 고르지 않으면 firstCard 뒤집기
gameManager.cs
...
bool isFlipping = false;
float waitTime = 0.0f;
public void openCard()
{ ...
if(GameManager.I.firstCard = gameObject)
{
GameManager.I.firstCard = gameObject;
isFlipping = true;
}
}
void Update()
{
if(isFlipping == true)
{
waitTime += Time.deltaTime;
if (waitTime > 5.0f && GameManager.I.secondCard == null)
{
closeCardInvoke();
GameManager.I.firstCard = null;
}
}
}
void closeCardInvoke()
{
isFlipping = false;
waitTime = 0.0f;
...
}
이 부분은 생각보다 쉬웠다 isFlipping 뒤집는 중인지 체크하고 Update()에서 5초의 시간동안 2번째 카드가 null이면 카드를 뒤집는 함수를 부르고 변수 처리를 해주었다
08/09
- 게임 내 전체 Sound 추가
타이틀 화면 배경음악, 인게임 배경음악, 엔딩크레딧 배경음악, 카드 뒤집었을 때, 카드 매칭 성공,실패 sound 작업
소리를 추가할 object에 AudioSource 컴포넌트를 추가하고
배경음악.cs 는 아래 코드 처럼 작성
audioManger.cs
public AudioClip title;
public AudioSource audioSource;
void start()
{
audioSource.Clip = title;
audioSource.Play();
}
다른 sound 들은 각 실행되어야 하는 함수 안에 넣어주었다
card.cs
public void openCard()
{
audioSource.PlayOneShot(flip);
...
}
gameManger.cs
public void checkMatched()
{
...
if(firstCardImage == secondCardImage)
{
audioSource.PlayOneShot(match);
...
}
else
{
audioSource.PlayOneShot(fail);
...
}
}
-EndingCredit 제작
한 유튜브 강의 영상을 참고하여 만들어서 UI는 어렵지 않게 만들 수 있었고 애니메이션을 통해 아래에서 위로 올라가는 방식으로 제작하였다
애니메이션 제작도 완료 후 엔딩 크레딧이 끝나면 StartScene으로 들어갔으면 하는데 애니메이션의 종료 시점을 어떻게 알 수 있을까 라는 생각을 해보았다 고민 끝에 언리얼에서 자주 쓰였던 이벤트 함수가 있지 않을까 하여 구글링을 통해 애니메이션 종료 시점에 이벤트 함수를 생성하는 법을 배웠다 !
애니메이션 제작 탭에서 종료시점에 이벤트를 추가하고 endingCreaditHandler 스크립트를 만들어서 함수를 작성하고
애니메이션 제작 탭에서 생성한 이벤트를 누르면 함수를 적는 칸이 Inspector 창에 나온다
endinCreditHandler.cs
public Animator animator;
void Start()
{
Time.timeScale = 1.0f;
}
public void OnEnterNextScene()
{
SceneManager.LoadScene("StartScene");
}
(Time.timeScale = 1.0f; 는 게임 종료시 시간도 같이 멈추도록 설정하여 엔딩크레딧이 올라가지 않는 오류가 있어서 수정하였다)
이렇게 완료하고 실행을 해보니 StartScene으로 전환에 실패 했다 에러 메시지를 보니 빌드에 Scene 추가를 안해서 였다고... 그리고 다른 팀원분이 작업하고 계시는 엔딩 크레딧 버튼 부분에서도 같은 오류가 나셨는지 EndinScene도 빌드에 추가 요청을 받아 결국 모든 Scene을 추가해주고 끝이 났다
기능 구현 끝 !
'개발일지' 카테고리의 다른 글
[C#문법종합반] 2주차 과제 - 틱택토 (feat.Console명령어) (0) | 2023.08.15 |
---|---|
[미니프로젝트] 금쪽이를 찾아라! - 내 코드 복습, 팀 코드 이해 (0) | 2023.08.10 |
[왕초보 유니티] 4주차 - 르탄이를 찾아라 기능 추가 구현 (0) | 2023.08.06 |
[왕초보 유니티] 5주차(완강) (0) | 2023.08.04 |
[왕초보 유니티] 4주차 (0) | 2023.08.04 |