Unity(119)
-
[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] 캔버스(Canvas)와 UI, Text, RectTransform
Render Mode - Overlay 모니터의 크기나 해상도에 따라서 캔버스의 위치가 자동으로 변한다. 달라질 수 있는 UI의 상대적인 위치를 동일하게 고정시키며 확대 축소가 자동으로 된다. 게임 화면과 캔버스가 겹쳐서 보인다. 버튼 추가로 캔버스를 하나 만들면, 기본으로 Screen Space - Overlay로 설정되어있는 것을 볼 수 있다. 오버레이 모드에서는 캔버스와 왼쪽 아래 작은 게임 화면이 겹쳐서 나타나게 된다. Render Mode - Camera 캔버스의 크기가 카메라의 크기와 동일하게 자동으로 조정된다. Overlay 모드와 같게 캔버스와 UI 항목이 해상도에 따라 상대적인 위치가 동일하다. 기본으로는 캐릭터 스프라이트가 버튼 위에 올라가있다. 씬에서 조절하면 버튼이 캐릭터 스프라이트..
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