오늘은 스파르타 코딩 클럽 unity 게임 개발 과정 4일차!
오늘도 즐거운 개발 과정을 작성해보겠다!
나는 온라인 부트캠프가 참 맘에 든다.
침대에서 일어나서 씻고나서 바로 참석 할 수 있다는 점이 아주 큰 매리트랄까!
그러므로 오늘도 일찍 자리를 지켰다!
일찍 도착하였지만 우리 프로젝트 작업물은 거의 작업이 완료 되어서 할 일이 별로 없다.
그래서 오늘은 어제부터 만들려고 했던 타이틀! 을 만들어 볼려고 한다.
타이틀은 https://www.canva.com/ko_kr/create/logos/gaming 이 사이트에서 만들었다.
게임 로고를 제작할 수 있는 사이트다.
그리고 https://www.bing.com/images/create?FORM=GENILP 에서 타이틀에 필요한 그림을 만들었다.
빙 이미지 크리에이터가 내가 지시한 그림을 만들어내는 사이트다.
둘다 내가 큰 노력을 할 필요없이 쉽게 제작할 수 있는 사이트 도움을 많이 받았다.
이렇게 귀여운 이미지를 가지고 로고를 만들면 그것이 바로 타이틀이 되는 것!
그 이미지를 splash image에 넣어서 사용했다.
여기서 splash image란..
게임이 시작될 때 보이는 이미지다.
프로버전의 유니티를 사용하면 처음에 유니티의 로고가 보이지 않고 바로 우리가 만든 로고가 보이는데
나는 유니티의 로고가 보기 좋기도 하고 프로를 사서 쓸 돈도 없기에 그냥 쓴다 .. 뭐 문제도 없구 ^^
그래서 여러분이 하는 게임 중 저 유니티가 처음에 보인다면 아 ~ 무료버전의 유니티로 게임을 만들었구나! 라고 생각하면 된다.
아 그래서 우리가 만든 타이틀은 왜 안보여주냐고?
다음 게시글에 공개할 것이다.
정말 잘 뽑혀서 기분이 좋다.
또 한가지 ui를 수정 하였다.
원래는 미니게임 플레이어의 체력을 상단에 두었는데 이제는 플레이어의 머리 위에 두어 가시성이 좋아졌다.
효과도 좋지만 코드 작성의 난이도도 짧다!
아주 가성비 넘치는 효과!
코드 전문은 이렇다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Follow : MonoBehaviour
{
RectTransform rect; //Ui는 트렌스폼과 달리 따로 변수를 만들어 줘야 한다.
private void Awake()
{
rect = GetComponent<RectTransform>();
}
private void FixedUpdate()
{
rect.position = Camera.main.WorldToScreenPoint(new Vector3(MiniGameManager.I.run.transform.position.x+20,(MiniGameManager.I.run.transform.position.y)+15f, MiniGameManager.I.run.transform.position.z));
}
}
rect.position = Camera.main.WorldToScreenPoint(new Vector3(MiniGameManager.I.run.transform.position.x+20,(MiniGameManager.I.run.transform.position.y)+15f, MiniGameManager.I.run.transform.position.z));
이 코드가 제일 핵심인데.
실제로 ui의 위치와 게임 오브젝트의 위치는 다르다.(월드와 스크린의 차이)
미니게임의 플레이어인 run의 포지션을 그냥 넣어버리면 안된다.
이 문제를 해결해 주는것이 Camera.main.WorldToScreenPoint() 이 코드인데,
WorldToScreenPoint() 이것은 월드상의 오브젝트 위치를 스크린 좌표로 변환시켜주는 함수다.
이제 rect은 run을 따라간다!
저 몇줄만으로 !! 대단하다!!
이 코드는 유튜브 골드메탈님의 뱀서라이크 강좌에서 보고 참고하였다.
https://www.youtube.com/watch?v=ip0xffLSWlk&list=PLO-mt5Iu5TeZF8xMHqtT_DhAPKmjF6i3x&index=13
그리고 드디어 빌드를 해보았는데 어라.. 문제가 발생했다..
여태껏 우리는 유니티 내부의 게임뷰를 보면서 게임을 플레이하며 테스트 했다.
그런데 어라?? 빌드를 하니 이게 무슨... 일이람??
빌드를 하고나니 뭔가.. 뭔가가 이상하다..
이럴수가! 말도안돼!!
정말 절망적이였다!
눈물이 앞을 가렸다!
이 방법을 어떻게든 해결하기 위해 튜터님에게 달려가서 물어보았지만 조금 시간이 걸리시는 듯 했다.
그런데 그때 구세주가 있었으니!
바로 같은 조원인 은하님이다!
문제점을 바로 파악하고 내가 고민하던 부분을 완벽하게 고쳐주셨다.
문제가 뭐였냐면
켄버스의 스케일 문제였다.
여기서 Match는 이 화면을 세로를 기준해서 맞출지 가로를 기준을 해서 맞출지 옵션을 선택하는 속성이다.
이 속성 덕분에 드디어 내가 염원하던 아름다운 화면을 볼 수 있었다!
아아.. 너무 좋아!!
이렇게 해서 모든 준비를 끝낸 우리조는 내일을 위한 발표 준비를 했다.
시연영상은 내가 만들었고 발표는 빛은하님께서 맡으실 예정이다.
오늘도 즐거운 프로젝트 개발이였고 오늘 또한 큰 문제 없이 넘어가서 기분좋았다.
내일은 발표의 날이다! 우리의 프로젝트를 모두에게 보여주는 아주 중요한 날이다!
모두가 우리 게임을 좋아해주었으면 하는 바람이 크다!
아자아자 화이팅! 내일도 열심히!
이만 글을 줄이겠다! ㅂㅂ