본문 바로가기
SW - Unity

유니티 스크립트 사전 , 기능 코드 모음

by 상승남 2021. 1. 15.
728x90
반응형

 

 

 

일시정지, 다시시작 만들기

https://prosto.tistory.com/93

화면 재시작(게임제시작 Retry경우)

  1. using UnityEngine.SceneManagement; 추가
  2. SceneManager.LoadScene(0); //0또는 실제 신의 이름 기입

예시

public void GameRetry()

{

SceneManager.LoadScene(0);  //0또는 실제 신의 이름 기입

}

buildSetting에 씬을 추가 및 설정을 해준다.

 

 

 

 

숫자 , 생성(콤마) 1000 → 1,000

int 형을 문자열로 변경해준다.

자릿수마다 콤마를 생성해준다.

string.Format("{0:n0}", 실제값 )

예시

scoreText.text = string.Format("{0:n0}",playerLogic.score )

 

 

 

 

 

게임오브젝트 삭제 구현 (슈팅게임 총알 삭제)


private void OnTriggerEnter2D(Collider2D collision) {

if(collision.gameObject.tag == "BorderBullet")

{

Destroy(gameObject);

}

}

 

 

 

애니메이션 이동 구현 (에니메이터 편집)


  1. 에니메이터에서 에니메이션을 움직이게 하려면 파라미터를 추가하여 편집을 해준다.

 

 

 

 

백버튼 한번 종료


void Update()

{

if(Input.GetKeyDown(KeyCode.Escape))

{

Application.Quit();

}

}

 

 

 

백버튼 두번 종료


int ClickCount = 0;

void Update()

{

/* press to start

if (Input.GetMouseButtonDown(0))

{

SceneManager.LoadScene(SceneToLoad);

}

*/

if (Input.GetKeyDown(KeyCode.Escape))

{

ClickCount++;

if (!IsInvoking("DoubleClick"))

Invoke("DoubleClick", 1.0f);

}

else if (ClickCount == 2)

{

CancelInvoke("DoubleClick");

Application.Quit();

}

}

void DoubleClick()

{

ClickCount = 0;

}

 

 

 

플로트값(float) 정수로 변환해주기<볼트방식>


  1. FloorToInt 추가

시간 지난 만큼 점수 주기<볼트방식>


  1. Get Delta Time 추가
  2. Multiply를 추가하여 Get Delta Time 과 곱해준다. (ex 숫자 5만큼 곱해준다)
  3. GetGameTime을 가져온다.
  4. Add 기능을 가져와서 Multiply의 결과값과 GetGameTime의 값을 더해준다.
  5. SetGameTime을 가져와서 Add의 값과 Update 값을 연결해준다.

무한 배경(패럴랙스)


무한 배경(스크롤링) -2D슈팅 게임 사용


배경을 재활욯 하는 방법

무한 배경(볼트<비쥬얼 스크립트> 방식)


  1. 임오브젝트 인스펙터 창에서 Flow Machine를 Add Component 에서 적용을 해준다.
  2. Flow Machine 에서 New를 눌러서 생성한 매크로(Macro) 폴더에 파일을 저장해준다.

 

 

 

 

그림 분리 방법


  1. 이미지를 클릭해준다.
  2. 인스펙터 창에서 Sprite Mode 를 Multiple 로 변경해준다.
  3. Sprite Editor 창에 들어간다.
  4. 에디터 창안에서 Slice 를 누른다.
  5. 오른쪽 상단위에 Apply를 적용해준다.

조이스틱 이동

public Joystick joystick;

Rigidbody rigid;

void Awake()

{

rigid = GetComponent<Rigidbody>();

}

void Start()

{

joystick = FindObjectOfType<Joystick>();

}

void FixedUpdate()

{

rigid.AddForce(new Vector3(joystick.Horizontal, 0,joystick.Vertical),ForceMode.Impulse );

}

플레이어 현재 위치 가져오기


Vector3 curPos = transform.position;

//플레이어의 현재 위치 가져오기 transform 은MonoBehaviour의 기본변수 이다.

플레이어가 다음에 이동할 위치값 가져오기(2D슈팅게임)


Vector3 nextPos = new Vector3(h,v,0);

//다음에 이동해야 될 위치 값 가져오기

Vector3 nextPos = new Vector3(h,v,0) * speed * Time.deltaTime;

//다음에 이동해야 될 위치 값 가져오기

//물리적 이동이 아닌 트랜스 폼 이동은 Time.DeltaTime을 곱해준다.

이동완료 조건

transform.position = curPos + nextPos; //현재위치 + 다음 위치 더해주면 물체는 이동하게 된다.

  • Time.deltaTime 사용 이유

성능에 따라 한 프레임에 나오는 결과 값을 보장함하여 두 유저가 같은 결과값을 얻도록 해야합니다. 이를 위해 Time.deltaTime을 사용해야 합니다.

 

 

 

플레이어가 화면 나가지 못하도록 막는 방법(경계 설정)


이동


Update() 메서드에 서술 한다.

float horizontal = Input.GetAxis("Horizontal"); //수평

float vertical = Input.GetAxis("Vertical"); //수직

rigid.AddForce(new Vector3(h,0,v), ForceMode.Impulse); //x축 ,y축 , z축

float h;

float v;

h = Input.GetAxisRaw("Horizontal");

v = Input.GetAxisRaw("Vertical");

디버그


Debug.Log("");

충돌 이벤트 사용


void OnTriggerEnter2D(Collider2D collision)

{

}

-——- OnTriggerEnter2D ——- 내부에 넣어 사용가능

플레이어 위치 원상복귀 기능

//플레이어 위치 원상복귀 (0,0,-1) 위치

collision.attachedRigidbody.velocity = Vector2.zero;

collision.transform.position = new Vector3(0,0,-1);

2개의 충돌체가 물리적 접촉시 호출


void OnCollisionEnter2D(Collision2D collision)

{

}

SceneManager 사용조건


using UnityEngine.SceneManagement; 네임 스페이스를 불러와야 합니다.

UI사용 조건


using UnityEngine.UI 로 라이브러리를 불러와 주어야 한다.

오브젝트의 활성화/비활성화


SetActive(true); //활성화

SetActive(false); //비활성화

Casual Game SFX Pack (효과음 다운 에셋스토어)


Audio Source (효과음 사용하기 및 적용)


유니티 메인화면 우측 하단에 있는 Add Component 에서 Audio Source를 추가 해준다.

Audio Source코드추가(손쉬운 오디오스트립트 예시)


코드상에서 먼저 AudioSource audioSource; 를 추가 한다.

그리고 AucioClip 에 역할별 변수를 적어준다.

스크립트 필수 서술

AudioSource audioSource;

ex)

public AudioClip audioJump;

public AudioClip audioAttack;

public AudioClip audioDamaged;

public AudioClip audioItem;

public AudioClip audioDie;

public AudioClip audioFinish;

ex)

audioSource = GetComponent<AudioSource>(); 를 정의 한다.

여러 오디오 사운드를 손쉽게 관리하기 위한 방안으로 아래와 같이 정의 한다.

PlaySound("JUMP"); 와 같이 필요한 명칭을 대입 후 조건 내부에 기입을 해준다.

ex)

void PlaySound(string action)

{

switch(action){

case "JUMP":

audioSource.clip = audioJump;

break;

case "ATTACK":

audioSource.clip = audioAttack;

break;

case "DAMAGED":

audioSource.clip = audioDamaged;

break;

case "ITEM":

audioSource.clip = audioItem;

break;

case "DIE":

audioSource.clip = audioDie;

break;

case "FINISH":

audioSource.clip = audioFinish;

break;

}

audioSource.Play();

}

카메라 (주인공) 추적 기능

게임을 제작할 때 카메라가 플레이어 캐릭터를 따라가도록 하는 몇 가지 옵션이 있습니다. 여러 방법 중 하나로 스크립트를 작성할 수 있습니다. 그러나 Unity에는 해당 문제를 해결해주는 빌트인 솔루션인 시네머신(Cinemachine)이 포함되어 있습니다.

무한 배경(볼트<비쥬얼 스크립트> 방식)


  1. 임오브젝트 인스펙터 창에서 Flow Machine를 Add Component 에서 적용을 해준다.
  2. Flow Machine 에서 New를 눌러서 생성한 매크로(Macro) 폴더에 파일을 저장해준다.

그림 분리 방법


  1. 이미지를 클릭해준다.
  2. 인스펙터 창에서 Sprite Mode 를 Multiple 로 변경해준다.
  3. Sprite Editor 창에 들어간다.
  4. 에디터 창안에서 Slice 를 누른다.
  5. 오른쪽 상단위에 Apply를 적용해준다.

이동


Update() 메서드에 서술 한다.

float horizontal = Input.GetAxis("Horizontal"); //수평 이동

float vertical = Input.GetAxis("Vertical"); //수직 이동

float h;

float v;

h = Input.GetAxisRaw("Horizontal");

v = Input.GetAxisRaw("Vertical");

  • GetAxisRaw의 특징은 -1,0,1의 값만 들어온다.

디버그


Debug.Log("");

충돌 이벤트 사용


void OnTriggerEnter2D(Collider2D collision)

{

}

-——- OnTriggerEnter2D ——- 내부에 넣어 사용가능

플레이어 위치 원상복귀 기능

//플레이어 위치 원상복귀 (0,0,-1) 위치

collision.attachedRigidbody.velocity = Vector2.zero;

collision.transform.position = new Vector3(0,0,-1);

2개의 충돌체가 물리적 접촉시 호출


void OnCollisionEnter2D(Collision2D collision)

{

}

SceneManager 사용조건


using UnityEngine.SceneManagement; 네임 스페이스를 불러와야 합니다.

UI사용 조건


using UnityEngine.UI 로 라이브러리를 불러와 주어야 한다.

오브젝트의 활성화/비활성화


SetActive(true); //활성화

SetActive(false); //비활성화

Casual Game SFX Pack (효과음 다운 에셋스토어)


Audio Source (효과음 사용하기 및 적용)


유니티 메인화면 우측 하단에 있는 Add Component 에서 Audio Source를 추가 해준다.

Audio Source코드추가(손쉬운 오디오스트립트 예시)


코드상에서 먼저 AudioSource audioSource; 를 추가 한다.

그리고 AucioClip 에 역할별 변수를 적어준다.

스크립트 필수 서술

AudioSource audioSource;

ex)

public AudioClip audioJump;

public AudioClip audioAttack;

public AudioClip audioDamaged;

public AudioClip audioItem;

public AudioClip audioDie;

public AudioClip audioFinish;

ex)

audioSource = GetComponent<AudioSource>(); 를 정의 한다.

여러 오디오 사운드를 손쉽게 관리하기 위한 방안으로 아래와 같이 정의 한다.

PlaySound("JUMP"); 와 같이 필요한 명칭을 대입 후 조건 내부에 기입을 해준다.

ex)

void PlaySound(string action)

{

switch(action){

case "JUMP":

audioSource.clip = audioJump;

break;

case "ATTACK":

audioSource.clip = audioAttack;

break;

case "DAMAGED":

audioSource.clip = audioDamaged;

break;

case "ITEM":

audioSource.clip = audioItem;

break;

case "DIE":

audioSource.clip = audioDie;

break;

case "FINISH":

audioSource.clip = audioFinish;

break;

}

audioSource.Play();

}

카메라 (주인공) 추적 기능

게임을 제작할 때 카메라가 플레이어 캐릭터를 따라가도록 하는 몇 가지 옵션이 있습니다. 여러 방법 중 하나로 스크립트를 작성할 수 있습니다. 그러나 Unity에는 해당 문제를 해결해주는 빌트인 솔루션인 시네머신(Cinemachine)이 포함되어 있습니다.

점수 만들기

 

 

 

반응형

댓글