일시정지, 다시시작 만들기
화면 재시작(게임제시작 Retry경우)
- using UnityEngine.SceneManagement; 추가
- 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);
}
}
애니메이션 이동 구현 (에니메이터 편집)
- 에니메이터에서 에니메이션을 움직이게 하려면 파라미터를 추가하여 편집을 해준다.
백버튼 한번 종료
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) 정수로 변환해주기<볼트방식>
- FloorToInt 추가
시간 지난 만큼 점수 주기<볼트방식>
- Get Delta Time 추가
- Multiply를 추가하여 Get Delta Time 과 곱해준다. (ex 숫자 5만큼 곱해준다)
- GetGameTime을 가져온다.
- Add 기능을 가져와서 Multiply의 결과값과 GetGameTime의 값을 더해준다.
- SetGameTime을 가져와서 Add의 값과 Update 값을 연결해준다.
무한 배경(패럴랙스)
무한 배경(스크롤링) -2D슈팅 게임 사용
배경을 재활욯 하는 방법
무한 배경(볼트<비쥬얼 스크립트> 방식)
- 임오브젝트 인스펙터 창에서 Flow Machine를 Add Component 에서 적용을 해준다.
- Flow Machine 에서 New를 눌러서 생성한 매크로(Macro) 폴더에 파일을 저장해준다.
그림 분리 방법
- 이미지를 클릭해준다.
- 인스펙터 창에서 Sprite Mode 를 Multiple 로 변경해준다.
- Sprite Editor 창에 들어간다.
- 에디터 창안에서 Slice 를 누른다.
- 오른쪽 상단위에 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)이 포함되어 있습니다.
무한 배경(볼트<비쥬얼 스크립트> 방식)
- 임오브젝트 인스펙터 창에서 Flow Machine를 Add Component 에서 적용을 해준다.
- Flow Machine 에서 New를 눌러서 생성한 매크로(Macro) 폴더에 파일을 저장해준다.
그림 분리 방법
- 이미지를 클릭해준다.
- 인스펙터 창에서 Sprite Mode 를 Multiple 로 변경해준다.
- Sprite Editor 창에 들어간다.
- 에디터 창안에서 Slice 를 누른다.
- 오른쪽 상단위에 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)이 포함되어 있습니다.
점수 만들기
'SW - Unity' 카테고리의 다른 글
[유니티 에러] Unity Error / Invalid editor window UnityEditor.FallbackEditorWindow UnityEditor.EditorApplicationLayout:FinalizePlaymodeLayout() (0) | 2021.01.31 |
---|---|
유니티(Unity) 비전공자 처음으로 게임개발 (0) | 2020.12.03 |
댓글