프로그래밍
-
[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..
-
[Unity]유니티 입문하기 6-8(속성)프로그래밍 2023. 8. 11. 19:35
이전 글에서는 객체 지향의 속성 중 하나인 캡슐화에 대해서 간단히 알아보았습니다. 이번에는 캡슐화의 또 다른 예시인 속성에 대해서 알아보겠습니다. 속성 앞에서 필드에 대해서 설명할 때 필드는 객체의 속성이라고 설명했었습니다. 하지만 여기서 말한 속성은 지금 말할 속성과는 달리, 프로그래밍 용어가 아니라 우리가 실생활에서 사용하는 단어였습니다. 이제부터 말할 속성(Property)는 프로그래밍 용어이며, 필드와 메서드 처럼 클래스를 구성하는 멤버 중의 하나입니다. 즉, 이제부터 말하는 속성은 클래스, 메서드와 같이 C#의 문법 요소라고 생각하시면 됩니다. 속성의 정의 속성은 어떤 필드의 값에 접근하거나 값을 수정하는 메서드입니다. 접근제한자 자료형 속성의이름 { get { return 필드명; } set ..
-
[Unity]유니티 입문하기 6-7(캡슐화)프로그래밍 2023. 8. 10. 22:07
이전 글을 통해서 개념을 추상화해 클래스로 만들고, 클래스를 이용해 객체를 생성하는 법에 대해서 배웠습니다. 이번에는 객체 지향의 특성 중 캡슐화에 대해서 알아보도록 합시다. 캡슐화 캡슐화란 말 그대로 클래스를 이루는 정보를 캡슐에 담듯이 포장해 외부에 공개할 것과 공개하지 않을 것을 구분하는 것을 말합니다. 좀 더 자세히 말하자면, 클래스에서 캡슐화란 정보를 한 데 묶어두는 것과 멤버중 일부는 공개하고 일부는 은닉하는 것을 말합니다. 여기서 정보를 한 데 묶어둔다는 것은 클래스를 생성하는 단계에서 클래스 안에 여러 필드와 메서드를 모아놓았던 것을 말합니다. 그럼, 공개와 은닉은 어떻게 하는 것일까요? 접근 제한자 접근 제한자는 클래스의 외부에 해당 클래스의 멤버를 공개할지 아닐지를 결정하는 키워드입니다..
-
[Unity]유니티 입문하기 6-5(클래스 - 추상화)프로그래밍 2023. 8. 6. 21:16
이전 글에서는 객체 지향 언어인 C#을 잘 이해하기 위해 객체 지향이 대체 무엇인지, 객체 지향과 절차 지향이 무엇이 다른지 알아봤습니다. 객체 지향 언어의 주요 개념 중 클래스부터 알아보겠습니다. 사실 앞에서 기본 개념이라고 하며 배웠던 대부분의 것들은, C#만이 아니라 다른 객체 지향 언어 및 절차 지향 언어 등 거의 모든 프로그래밍 언어가 기본적으로 사용하는 개념입니다. 따라서 C#를 제대로 이해하기 위해서는 객체 지향이 가지는 개념을 정확히 이해하고 사용할 수 있어야 합니다. 클래스 C#은 객체 지향 언어이고, 따라서 이전 글에서 설명했던 것처럼 객체를 만들고 그 객체들을 기준으로 나누어 프로그램을 작성하게 됩니다. 이때 이 객체가 어떤 속성을 가지고 있으며 어떤 기능을 하는지를 설명해 주는 설계..