본문 바로가기
게임개발/유니티 엔진

[스파르타 국비] 유니티로 만드는 게임개발 1주차

by do_ng 2024. 1. 20.

1. 유니티 좌표계

X축 : 오른쪽 방향 

Y축 : 위쪽 방향

Z축 : 앞 쪽(모니터를 바라볼 때 정면) 방향

 

toward = -1.0f;
transform.localScale = new Vector3(toward, 1, 1);

캐릭터의 방향을 왼쪽으로 변경하려면 유니티는 X축의 정뱡향이 오른쪽이므로 마이너스 값을 줘서 역방향으로 설정

(언리얼이나 다른 게임 엔진의 경우 좌표계가 다르기 때문에 그에 맞춰서 설정해야됨)

 

2. 프리팹 

게임이 끝나기 전까지 빗방울은 계속 떨어지기 때문에 빗방울이라는 오브젝트가 계속 생성되게끔 프리팹으로 만들어서 계속 호출

 

 

GameManager 스크립트

역할 : 전반적인 게임 동작을 관리(빗방울 오브젝트, 점수..등)

 

public GameObject rain;

유니티에서 rain 프리팹을 드래그앤드랍으로 rain 변수에 넣어줌

void Start()
{
    initGame();
    InvokeRepeating("makeRain", 0, 0.5f);
}

0.5초마다 "makeRain" 함수를 호출

void makeRain() {
    Instantiate(rain);
}

 

rain(빗방울) 오브젝트는 씬에 존재하지 않고 "GameManager"에 의해서 생성됨

 

 

3. 빗방울이 땅 또는 캐릭터와 충돌했을 때

 

빗방울(rain) 스크립트

void OnCollisionEnter2D(Collision2D coll)
{
    // 땅과 충돌했을 때 
    if (coll.gameObject.tag == "ground")
    {
        Destroy(gameObject); // 나(빗방울)의 오브젝트를 삭제 
    }

    // 르탄이와 충돌했을 때
    if (coll.gameObject.tag == "rtan")
    {
        GameManager.gameManager.addScore(score);
        Destroy(gameObject); // 나(빗방울)의 오브젝트를 삭제 
    }
}

빗방울과 충돌하는 모든 오브젝트는 Collider 정보를 가지고 있어야지 어떤 오브젝트와 충돌했는지 파악 할 수 있다. 

 

 

4. 점수, 시간정보 표시 

 

GameManager 스크립트

public Text scoreText;
private int totalScore;

public Text timeText; 
private float limit = 5f;

유니티 씬에서 점수와 시간정보에 대한 UI를 만든 후 "GameManager" 스크립트에서 데이터를 업데이트 해서 클라이언트가 보고 있는 화면에 렌더링

 

 

 

'게임개발 > 유니티 엔진' 카테고리의 다른 글

애니메이션 State 패턴 적용  (0) 2024.02.26
에니메이션 Lerp  (0) 2024.02.22
Raycast  (0) 2024.02.19
싱글톤 패턴 적용  (0) 2024.02.02
[스파르타 국비] 유니티로 만드는 게임개발 2주차  (0) 2024.01.23