⛳ 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());
}
다음과 같이 잘 작동하는 모습이다.
개인 공부 기록용 블로그입니다.
틀리거나 오류가 있을 경우 제보해주시면 감사하겠습니다.😁