유니티
-
[Unity]유니티 입문하기 6-16(적 생성용 프리팹)카테고리 없음 2023. 8. 30. 22:10
이전 글에서는 상속 기능을 활용해 적군의 종류를 늘려보았습니다. 이번에는 프리팹을 활용해, 적군의 생성을 관리하는 스크립트를 만들어봅시다. 프리팹은 이전에 총알을 만들 때에도 사용한 기능인데요, 정확히 말하자면 프리팹은 원하는 오브젝트를 통째로 에셋에 저장한 뒤, 원할 때마다 꺼내쓸 수 있게 한 것입니다. 적군 또한 같은 타입의 적이 여러 개체가 나오니, 프리팹으로 만들어 두면 관리하기 편하겠죠. 예전에 투사체를 제작할 때 Prefabs 폴더는 이미 만들어두었으니, Enemy1과 Enemy2를 Prefabs 폴더에 드래그하여 프리팹으로 만들어줍시다. 이제 이 프리팹들을 관리할 SpawnManager 스크립트를 작성해 봅시다. SpawnManager 스크립트는 Managers 폴더를 만들어 거기에 넣어두도..
-
[Unity]유니티 입문하기 6-15(적군 종류 추가)카테고리 없음 2023. 8. 28. 18:01
이전 글에서는 태그를 활용해 플레이어에게 충돌 판정을 입히면서도 플레이어가 발사한 총알과 충돌해도 반응하지 않도록 하였습니다. 이번에는 상속을 통해 적의 종류를 추가해 보도록 합시다. 상속에 관해서 배울 때, 비슷한 역할을 하는 다른 클래스를 만들 때 상속을 이용하지 않고 코드를 작성하는 것은 중복되는 부분이 많아져 효율적이지 않고, 유지보수에도 차질이 생길 수 있다고 배웠습니다. 그러니 우리가 저번에 만들었던 Enemy 클래스를 부모 클래스로 하여, 상속을 통해 적의 종류를 늘려보도록 합시다. 스크립트 작성 먼저, 관리를 쉽게 하기 위해 Scripts 폴더에 Enemies 폴더를 만들어, Enemy를 옮겨 넣고, Enemy1과 Enemy2 스크립트를 생성해 줍시다. using System.Collect..
-
[Unity]유니티 입문하기 6-13(적 피격 판정)프로그래밍 2023. 8. 24. 20:09
이전 글에서 드디어 적에 해당하는 오브젝트를 만들고, 클래스를 채워봤습니다. 이번에는 아군의 공격에 맞았을 때 반응하도록 피격 판정을 만들어봅시다. 일단, 바로 적을 향해 총알을 발사해 봅시다. 현재는 적 오브젝트와 총알이 충돌하여 체력이 감소하는 기능이 구현되어있지 않으므로, 그림과 같이 총알이 적을 그냥 지나치게 됩니다. 그럼 피격 판정을 만들기 위해 어떤 과정이 필요한 지 생각해 봅시다. 적과 총알이 충돌한다. 충돌이 발생하면 적의 체력이 감소한다. 충돌이 발생하면 투사체가 소멸하고, 체력에 따라 적이 소멸한다. 충돌 판정 이 모든 과정을 위해서는, 먼저 총알과 적이 충돌해야 합니다. 우리가 총알의 발사를 위해 RigidBody2D 컴포넌트를 이용했던 것처럼, 오브젝트 간의 충돌을 위해서는 Coll..
-
[Unity]유니티 입문하기 6-12(적군 오브젝트 생성)프로그래밍 2023. 8. 23. 19:39
이전 글에서 객체 지향의 마지막 성질까지 배웠습니다. 이제 여태까지 배운 지식들을 총동원해 적 캐릭터를 한번 만들어봅시다. 먼저 Enemy 클래스를 정의해봅시다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Enemy : MonoBehaviour { // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } } Enemy 클래스를 막 생성했다면 이런 모습일 겁니다. 방금 생성한 뒤 아무것도 건드리지 않았으니 Start()와 Update..
-
[Unity]유니티 입문하기 6-11(다형성)프로그래밍 2023. 8. 22. 20:05
이전 글에서는 클래스의 상속에서 이어지는 클래스의 형변환과, 오류 없는 형변환을 위해 as와 is 연산자를 사용하는 법을 배웠습니다. 이번 글에서는 객체 지향의 마지막 특성, 다형성에 대해서 알아보겠습니다. 다형성은 이름 그대로 해석하면 여러 가지 형태를 가지는 성질입니다. 즉, 같은 이름의 코드가 여러가지 형태를 띠고 다양한 역할을 할 수 있음을 의미하죠. 메서드 오버라이드와 메서드 오버로드를 통해 자세히 알아봅시다. 메서드 오버라이드 메서드 오버라이드는 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 의미합니다. 메서드 오버라이드는 아래와 같은 형태로 이루어집니다. 접근 제한자 virtual 반환타입 메서드 이름(매개변수) //부모 클래스의 메서드 { } 접근 제한자 override 반환타입 ..
-
[Unity]유니티 입문하기 6-10(클래스의 형변환)프로그래밍 2023. 8. 17. 20:20
이전 글에서는 클래스의 상속에 대해 배우며 Human의 하위 클래스인 Adult와 Baby를 만들어보았습니다. 이번 글에서는 클래스의 상속으로 인해 일어날 수 있는 형변환에 대하여 알아보겠습니다. 앞선 글에서 변수의 형변환에 대하여 배울 때, 형변환에는 암시적 형변환과 명시적 형변환이 있다고 배웠습니다. 암시적 형변환은 좁은 범위에서 넓은 범위의 자료형으로 형변환이 일어나는 것이었고, 명시적 형변환은 넓은 범위에서 좁은 범위의 자료형으로 형변환이 일어날 때 이를 직접 명시해 형변환해 주는 방식이었습니다. 클래스의 경우에도 이를 적용할 수 있는데요, 객체를 인스턴스화 할 때 잘 보면 결국 우리가 정의한 클래스라는 형태의 자료형의 변수에 객체를 저장하는 것임을 알 수 있습니다. 즉, 클래스는 자료형처럼 동작..
-
[Unity]유니티 입문하기 6-9(상속)프로그래밍 2023. 8. 14. 20:38
이전 글에서는 객체 지향의 두 번째 특성인 캡슐화에 대해서 알아보았습니다. 이번에는 객체 지향 언어의 세 번째 특성, 상속에 대해서 알아보겠습니다. 여기, 앞서 배웠던 요소들을 전부 이용해 만든 Human 클래스가 있습니다. class Human { private string name; private int age; private float height; public Human(string _name, int _age, float _height) { name = _name; age = _age; height = _height; } public string Name { get { return name; } set { name = value; } } public int Age { get { return ag..