-
[Unity]유니티 입문하기 6-15(적군 종류 추가)카테고리 없음 2023. 8. 28. 18:01
이전 글에서는 태그를 활용해 플레이어에게 충돌 판정을 입히면서도 플레이어가 발사한 총알과 충돌해도 반응하지 않도록 하였습니다.
이번에는 상속을 통해 적의 종류를 추가해 보도록 합시다.
상속에 관해서 배울 때, 비슷한 역할을 하는 다른 클래스를 만들 때 상속을 이용하지 않고 코드를 작성하는 것은 중복되는 부분이 많아져 효율적이지 않고, 유지보수에도 차질이 생길 수 있다고 배웠습니다.
그러니 우리가 저번에 만들었던 Enemy 클래스를 부모 클래스로 하여, 상속을 통해 적의 종류를 늘려보도록 합시다.
스크립트 작성
먼저, 관리를 쉽게 하기 위해 Scripts 폴더에 Enemies 폴더를 만들어, Enemy를 옮겨 넣고, Enemy1과 Enemy2 스크립트를 생성해 줍시다.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Enemy1 : Enemy { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } }
그 후 Enemy1과 Enemy2의 부모 클래스를 MonoBehaviour에서 Enemy로 변경해 주면 됩니다.
이렇게 Enemy1과 2를 만드는 데에는 성공했지만, 이대로라면 Enemy를 그대로 베껴왔을 뿐인 클래스가 됩니다.
Strat() 메서드에 Move() 메서드를 만들어 넣어 게임이 시작하면 각각 왼쪽과 오른쪽으로 이동하는 기능을 넣어봅시다.
//Enemy1.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class Enemy1 : Enemy { void Start() { Move(); } void Move() { GetComponent<Rigidbody2D>().AddForce(Vector2.right * 50); } } //Enemy2.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class Enemy2 : Enemy { void Start() { Move(); } void Move() { GetComponent<Rigidbody2D>().AddForce(Vector2.left * 50); } }
지금은 단순하게 단방향 이동으로 했지만, 다양한 응용을 통해 새로운 종류의 적군을 만들 수도 있습니다.
오브젝트 생성
스크립트의 작성이 끝났으니, 이제 스크립트를 오브젝트에 부착해 봅시다.
먼저 이미 존재하던 Enemy 오브젝트를 삭제한 뒤, Enemy1과 Enemy2 오브젝트를 각각 생성해 줍니다.
오브젝트를 생성했다면 스프라이트 렌더러의 색 변환 기능을 이용해 한쪽의 색을 바꾸어서 구분할 수 있게 해 줍니다.
마지막으로 잊지 말고 Rigidbody2D를 추가한 뒤 중력 스케일을 0으로 설정해 두고 게임을 실행해 봅시다.
성공적으로 적 오브젝트가 정해진 방향으로 날아가는 것을 확인할 수 있습니다.
만약 이동속도를 조절하고 싶다면, Player 오브젝트에서 그랬던 것처럼 speed 변수를 public으로 추가하여 인스펙터 창에서 조절하면 됩니다.