본문 바로가기

전체 글

3. 적 전투기 만들기 전글과 동일하게 적 전투기 오브젝트를 프리펩으로 저장합니다. Enemy 스크립트를 하나 생성하고 적 전투기들 프리펩에 넣어줍니다. //Components Rigidbody2D rigid; SpriteRenderer spriteRenderer; //Vars public float speed; public int health; //Sprites public Sprite[] sprites; void Awake() { rigid = GetComponent(); spriteRenderer = GetComponent(); rigid.velocity = Vector2.down * speed; //적 전투기가 아래로 향하게 } void onHit(int dmg) { //피격 함수 //Health Down health .. 더보기
2. 플레이어 총알 구현 프리펩을 이용해 플레이어의 총알을 구현합니다. 프로젝트의 스프라이트 이미지를 이용, 드래그 앤 드랍으로 총알 오브젝트를 만들어줍니다. 이어서 각각의 오브젝트에 필요한 컴포넌트를 넣어줍니다. 총알의 Gravity Scale 0 꼭 입력해주세요. 앞으로 총알 오브젝트를 쓸일이 아주 많기 때문에, 프리펩을 만들어 놓겠습니다. 프로젝트에서 마우스 우클릭으로 빈 폴더를 하나 만들어 줍니다. Hierarchy의 두 총알 오브젝트를 Prefabs 폴더에 드래그 앤 드랍 해줍니다. 그렇게 되면 자동으로 프리펩이 만들어지면서 하이라키(Hierarchy)에 두 총알 오브젝트가 파란색으로 바뀌게 됩니다. 이는 프리펩 오브젝트임을 알려주는 표시입니다. 이제 총알이 필요할때마다 프리펩에 저장된 총알 오브젝트를 불러내기만 하면 .. 더보기
1. 플레이어 이동 & 맵 경계선 설정 사용한 에셋 : https://assetstore.unity.com/packages/2d/characters/vertical-2d-shooting-assets-pack-188719 Vertical 2D Shooting Assets Pack | 2D 캐릭터 | Unity Asset Store Elevate your workflow with the Vertical 2D Shooting Assets Pack asset from Goldmetal. Find this & more 캐릭터 on the Unity Asset Store. assetstore.unity.com 플레이어 생성 및 기본 움직임 구현 Background Grid는 그냥 배경 오브젝트로, Layer in order을 -1로 설정해 제일 뒤에 놓.. 더보기
더블점프 구현 점프에 사용되는 스프라이트 이미지가 따로 나뉘어있어, 애니메이터를 생성할 수 없었다. 코드를 통해 스프라이트 이미지를 바꿔도 애니메이션 재생으로 스프라이트 이미지가 바뀌지 않는 것처럼 보이는 현상이 발생했다. 그래서 점프와 낙하중에는 애니메이터를 꺼버리고, 스프라이트 이미지를 교체하는 식으로 애니메이션을 만들었다. 스크립트 Rigidbody2D rigid; Animator animator; SpriteRenderer spriteRenderer; bool isJumping; bool isDoubleJumping; void jump() { if (Input.GetButtonDown("Jump") && !isDoubleJumping) { if (isJumping) //더블점프 { isDoubleJumping .. 더보기
10. 사운드 출력 게임에 사용할 오디오 클립들을 미리 선언한 후, audio 컴포넌트에서 조건에 따라 클립을 바꿔 사용합니다. 오디오 소스는 에셋스토어에서 무료로 가져올 수 있습니다. //Components AudioSource audioSource; //Audio Clips public AudioClip audioJump; public AudioClip audioAttack; public AudioClip audioDamaged; public AudioClip audioItem; public AudioClip audioDie; public AudioClip audioFinish; void Awake(){ audioSource = GetComponent(); } public void playSound(string acti.. 더보기
9. 스테이지 추가 & UI Create Empty로 빈 오브젝트를 만들고 다른 오브젝트들을 안에 넣어줍니다. 타일맵 & 팔레트로 스테이지를 그려줍니다. 깃발에 닿으면 현재 스테이지는 비활성화 되고, 다음 스테이지는 활성화 되는 방식입니다. 게임매니저에서 배열과 인덱스 번호를 사용해 컨트롤합니다. public int stageIndex; stages 배열 인덱스로 사용 public GameObject[] stages; //스테이지 맵핑 public void nextStage() { if (stageIndex < 2) //스테이지가 1, 2일때 현재 스테이지 비활성화, 다음 스테이지 활성화 { //Next Stage stages[stageIndex].SetActive(false); stageIndex++; stages[stageInd.. 더보기
8. 아이템 먹기 동전 먹기 오브젝트 생성 후 각각의 Item에 이름을 붙여준다. collider에서 isTrigger 체크하기 player 스크립트 public GameManager gm; //GameManager 오브젝트 맵핑하기 void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.tag == "Item") { //Point bool isBronze = collision.gameObject.name.Contains("Bronze");//브론즈 코인 bool isSilver = collision.gameObject.name.Contains("Silver"); //실버 코인 bool isGold = collision.gameObject.name.C.. 더보기
7. 몬스터 밟아서 잡기 마리오처럼 몬스터 밟아서 처치하기 Player 스크립트 void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.tag == "Enemy") { //Attack if (rigid.velocity.y collision.transform.position.y) { onAttack(collision.transform); //충돌 정보 매개변수로 전달 } else { onDamaged(collision.transform.position); } } } void onAttack(Transform enemy) { //Reaction Force rigid.AddForce(Vector2.up *.. 더보기