게임 만들기(15)
-
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(15) 화면 해상도 고려하기
화면 해상도에 따라 UI 또는 적 위치, 플레이어 위치가 일정한 비율을 유지하고 싶다면, Camera.main.ViewportToWorldPoint를 사용하면 된다. min = Camera.main.ViewportToWorldPoint(new Vector3(0, 0, 0)); max = Camera.main.ViewportToWorldPoint(new Vector3(1, 1, 0)); PlayerScript에서 플레이어의 이동을 제한하는 부분에서 해상도가 달라지더라도 Camera 크기에 맞게 최대치와 최소치를 반영할 수 있다. GameManager 스크립트에서도, void Start() { gem = 0; gemScore.text = gem.ToString(); maxRight = Camera.main...
2023.09.25 -
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(14) 메인 메뉴 UI 추가하기
메인메뉴로 쓸 새로운 씬을 생성하고 Panel, Text를 추가하여 게임 타이틀을 설정한다. Canvas 설정은 메인 씬과 동일하게 설정한다. 게임 타이틀 텍스트에 애니메이션을 넣기 위해 Animator 컴포넌트를 추가한다. Anims 폴더에 Animator Controller, Animation을 각각 추가한다. Animation에는 Loop Time을 활성화한다. Animator Controller에 애니메이션을 드래그하여 넣는다. 게임 타이틀 컴포넌트 - Animator에 만들어 놓은 Animator Controller를 끌어서 적용한다. 애니메이션을 수정하여 적용한다. 배경은 GameScene에서 썼던 배경을 그대로 가져온다. 'Start Game'과 'Quit' 버튼을 추가하였다. 이후 빈 게임..
2023.09.25 -
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(13) 코인 점수 표시하기, UI 메뉴 이미지 추가하기
프로젝트에 Text(Legacy)를 추가하고 적절한 폰트를 설정한 후 코인 점수를 표시할 용도로 중앙 위쪽에 Text를 위치시킨다. 앵커는 최상단을 따라가게 하여 좌우에 영향을 받지 않게 한다. public class GameManager : MonoBehaviour { public Text gemScore; ... gemScore 변수를 추가한 후 void Start() { gem = 0; gemScore.text = gem.ToString(); } gemScore의 텍스트에 float 형의 gem을 string으로 바꿔 대입한다. 이제 PlayerScript에서 OnTriggerEnter2D에서 gem을 먹을 때 스코어가 올라가게 설정하면 된다. void OnTriggerEnter2D(Collider..
2023.09.22 -
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(12) 적 미사일 추가, 미사일 충돌
적절한 적 발사체 스프라이트를 찾아서 적용해주고 Tag, Layer를 추가하여 설정한다. RigidBody 2D, Box Collider 2D를 추가하고 EnemyShoot 스크립트를 새로 만든다. Player와 EnemyShoot의 교차점을 체크하여 Physics를 적용한다. public class EnemyShoot : MonoBehaviour { public float speed = 4; void Start() { } void Update() { transform.Translate(Vector3.left * speed * Time.deltaTime); } void OnBecameInvisible() { Destroy(gameObject); } } 코드는 위와 같이 작성하여 왼쪽으로 진행되게 만든다...
2023.09.18 -
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(11) 젬 점수, 젬 먹기
가장 먼저, GemScript에서 gem 변수를 추가한다. public class GemScript : MonoBehaviour { public float gemSpeed = 2; public float gem = 1; void Update() { transform.position += Vector3.left * Time.deltaTime * gemSpeed; } private void OnBecameInvisible() { Destroy(gameObject); } } 다음 AsteroidScript에서도 gem을 2 값으로 추가한다. public class AsteroidScript : MonoBehaviour { public float asteroidSpeed = 5; public float rota..
2023.09.18 -
[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(10) 적 생성, 충돌, 제거
스프라이트들로 Enemy 애니메이션을 생성하고, Rigidbody 2D, Circle Collider 2D를 추가한다. Tag와 Layer도 Enemy로 설정한다. public class EnemyScript : MonoBehaviour { public int type = 0; public int hp = 3; public float enemySpeed = 4; void Start() { switch (type) { case 0: hp = 10; enemySpeed = 1.5f; break; case 1: hp = 20; enemySpeed = 1.4f; break; } } void Update() { transform.position += Vector3.left * enemySpeed * Time.de..
2023.08.31