https://www.youtube.com/watch?v=9g4prUqF2oA

 

 

 

 

저 원 zone 을 입장시 넥스트 스테이지 활성화

 

 

다음 스테이지( Scene )로 이동이 아니라,

이동 한 거 처럼 보이게 할 거임

 

상점 비활성화하고 넥스트 스테이지도 비활성화 할 예정

 

 

 

+

 

 

일단

zone 아래 자식오브젝트로 3d object - 3d text 생성

(최신버전에선 text mesh pro)

 

public class StartZone : MonoBehaviour

{
    public GameManager manager;

    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Player")
            manager.StageStart();
    }

}

 

이 오브젝트에 닿을시,

스테이지 시작 (=스테이지 변경) 이라는 뜻의 스크립트

 

 

+

 

 

스크립트 속 퍼블릭 변수 이름은 itemShop

하이어라키 오브젝트 이름은 Item Shop

 

같은 걸 지칭하지만, 일부러 이렇게 다르게 이름지음

 

+

 

stage++;
stage += 1;
stage = stage + 1;

 

씨샵에서는 위 코드 셋 다 동일하게 적용함

값을 1을 증가시켜줌

 

+

 

 

플레이어는 태그도 레이어도 전부 Player 로 설정할 것

 

 

+

 

        player.transform.position = new Vector3(0, 0, 0);

 

플레이어 위치를 맵의 x y z 0 0 0 으로 이동시키겠다는 뜻

 

맵의 처음 시작 위치를 0 0 0 으로 설정함

 

되돌아 갈때도 저 0 0 0 위치로 지정함

 

+

 

            int ranCoin = UnityEngine.Random.Range(0, 3);

 

랜덤 레인지 0~3 중 랜덤한 값 하나를 지정하겠다는 뜻

 

+

 

using System;
using Random = UnityEngine.Random;

 

Random 에 빨간줄 뜨면

맨 위 네임스페이스에 위 두개를 추가하라함

 

+

 

public void StageStart()
{

zone.gameObject.SetActive(true);

}

public void StageEnd()
{

zone.gameObject.SetActive(false);

}

스테이지 시작시 특정 오브젝트 활성화 

스테이지 종료시 특정 오브젝트 비활성화 해주겠다는 뜻

 

+

 

        if (stage % 5 == 0)
{ 

}

 

스테이지가 5 10 15 20 ... 이렇게 5 단위 일때

 

+

 

        if ( !isJump && !isDodge && !isDead)
        {
        }

 

점프 중이 아닐때, 회피 중이 아닐때, 죽지 않았을 때

여러 조건을 설정할 때임

 

+

 

 

이렇게 조건문을 매번 && !isState 를 스크립트 구간마다 일일히 복붙 하는건 노가다다

 

이 노가다를 줄일려면

 

bool CanPerformAction() {
    return !isJump && !isDodge && !isDead;
}

void Update() {
    if (CanPerformAction()) {
        // 실행할 코드
    }
}

 

이렇게 줄일 수 있다고 함

 

 

+

 

 

게임 메니저 스크립트에서, 씬 관련 함수 쓰려면

 

using UnityEngine.SceneManagement;

 

맨 위 네임스페이스 저걸 써야 함

 

+

 

        SceneManager.LoadScene(0);

 

씬 넘버 0을 불러온다

지금 씬 넘버 0 에 위치할 시, 초기화 하는 거임

 

+

 

강좌 내에선, 

플레이어 오브젝트의 인스펙터 창에 Manager 변수 지정후

Game Manager 오브젝트를 연결해 주었다.

 

 

플레이어 < - > 게임메니저

상호 작용을 위한 거라고 추측

 

+

 

 

 

게임 오버 버튼 오브젝트는

Navigation None 으로 설정해서

스페이스 바 같은 단축키로 눌러지지 않게 변경

 

+

 

 

Audio Source 컴포넌트,

Audio Resource 에 원하는 효과음 지정

 

    public AudioSource jumpSound;

 

    void Jump()
    {
            jumpSound.Play();
            // 점프 사운드 재생
    }

 

jumpSound.Play(); 를 로직 안에 넣어 재생되게 만듦

 

 

 

+

 

 

Play On Awake , 게임 시작시 자동 재생

이 옵션은 끈다

 

+

 

 

빌드 세팅-  프로젝트 세팅 가면

바탕화면에 보여질 아이콘 설정 가능

 

디폴트 커서도 설정 가능

 

+

 

 

아래쪽에 기본 화면 모드 설정가

풀 스크린 (전체화면) 이냐

윈도우드 (창모드)냐

 

+

 

 

Build 누르면 지금껏 만든 걸 다 포장해서

실행 가능한 파일로 만들어줌

 

출판 이라고 보면됨

 

 

처음 프로토타입은 빌드 시간은 2 분 걸림

 

 

+

 

나 혼자 데모 플레이만 하려면 굳이 빌드 할 필요는 없음

 

플레이 모드 ( ctrl P ) 만 써서 게임 체크해보면 되는 거임

 

 

1920 x 1080 테스트 결과

gpu 4.4 gb 사용 이니까... gpu 6gb 이상을 권장 사양으로 둬야 하겠는데?

 

권장사양 : GTX 1060 이상

 

+

 

 

빌드된 게임 시작시

유니티 로고가 강제로 뜨며 3초간 정지함

이거 없애고 싶은데...

 

->

 

 

Project Settings

- Player - Splash Image - Show Splash Screen 체크 해제

 

하면 없앨 수 있음

 

+

 

애니메이션 컨트롤러 정리

 

 

컨디션 스테이트 상태는 크게 두가지로 나뉨

 

Bool Trigger
true 냐 false 냐 발동
긴 시간동안 지속되는 것 짧게 한번 발동후 디폴트 idle로 돌아오는 모션
isJump
isWalk
isRun
doDie
doReload
doSwap
doSwing
doShot
doDodge

 

 

반응형
Posted by 이름이 익명
: