⛳ Maze 만들기 4
1. 카메라 제어
지금까지 프로젝트를 만들었으면 Camera가 고정되어 움직일 것이다. 이를 해결하기 위하여 Camera script를 만들어준뒤 다음과 같이 코드를 넣어준다.
Main Camera 오브젝트에 만든 Script를 넣어준 뒤 Script의 Player에 Player오브젝트를 끌어다가 넣어준다.
public GameObject player;
public static Camera instance = null;
void Start()
{
transform.rotation = Quaternion.Euler(61, 0, 0);
}
void Update()
{
transform.position = player.GetComponent<Transform>().position;
transform.position += new Vector3(0, 10, -4);
}

코드를 적용하자 다음과 같이 Camera가 플레이어를 따라다니는 것을 볼 수 있다.
2. UI 구성하기
다음과 같이 Hierarchy -> UI -> Canvas를 만들어 준다.
이후 Canvas 안에 Panel과 Button, Text를 만들어준 후 Text의 이름을 Timer로 변경한다.
또 Create Empty를 눌러서 UI Manager라는 오브젝트를 생성해준다.
이후 UIManager라는 새로운 Script를 만들어준다.

public class UIManager : MonoBehaviour
{
public float playtime;
public GameObject Pannel;
bool timeStart;
public Text text;
void Start()
{
playtime = 0.0f;
Time.timeScale = 0;
timeStart = false;
playtime = 0;
}
void Update()
{
Timer();
}
public void GameStart()
{
Time.timeScale = 1;
Pannel.SetActive(false);
print("게임시작");
timeStart = true;
}
public void Timer()
{
if(timeStart == true)
{
playtime += Time.deltaTime;
text.text = playtime.ToString("N2") + "초";
}
}
}
다음과 같이 스크립트를 작성해준 후 만들어준 UI Manager 오브젝트 안에 넣어준다.
Script 안의 Pannel과 Text를 넣어준 후 작동시키면 다음과 같이 UI가 생성된다.

게임시작 버튼을 누르면 게임이 실행되고, 그 전까지 캐릭터가 정지상태로 있는다.
또한 오른쪽에 Timer가 생성되었다.
3. Coroutine을 사용한 대시 기능
게임에는 대시, 순간이동, 힐등 여러가지 사용 스킬들이 있다.
간단히 다음과 같은 대시 스킬이 있다고 하자
- shift를 눌러 발동시 2초동안 빨라진다.
- 스킬 종료시 3초간의 쿨타임이 존재한다.
- 스킬 사용시, 재사용이 가능할때 Console로 알려준다.
이를 구현하기 위하여 Player Script에 다음과 같은 함수를 넣어준다.
IEnumerator Ghost()
{
cooldown = true;
PlayerSpeed = 20;
print("스킬 발동");
yield return new WaitForSeconds(2);
print("스킬 쿨타임");
PlayerSpeed = 10;
yield return new WaitForSeconds(3);
print("스킬 사용가능");
cooldown = false;
}
이후 PlayerMove()함수에 다음과 같은 else if문을 추가해준다.
else if (Input.GetKey(KeyCode.LeftShift) && !cooldown)
{
StartCoroutine(Ghost());
}

다음과 같이 잘 작동하는 모습이다.
개인 공부 기록용 블로그입니다.
틀리거나 오류가 있을 경우 제보해주시면 감사하겠습니다.😁