728x90
반응형

Game Development, 게임개발 182

Handling Event, 이벤트 활용하기 - 2 [Unity]

이어서 이벤트를 활용해보자 이전 글과 이어진다. 이번에는 Enemy가 죽으면 해당하는 점수를 인터페이스 보여주려고 한다. 여기선 HUD, Head Up Display로 나타난다. 총알을 맞으면 어떻게 되는지 보자 private void OnCollisionEnter2D(Collision2D collision) { Destroy(collision.gameObject); GameObject xPlosion = Instantiate(explosion, transform.position, Quaternion.identity); xPlosion.transform.localScale = new Vector2(2, 2); Destroy(gameObject); } 이번에도 이벤트를 이용하고 싶다. 이번엔 이런 식으로 ..

Handling Event, 이벤트 활용하기 [Unity]

이벤트를 배워놓고 어디다 써먹는지 몰랐다. 이제 왜 이벤트를 써야하는지 알아 볼 차례다. 알아보자 문제 상황 플레이어가 총을 쏘는데 총알이 스크린을 벗어나거나 적에게 맞지 않는다면 총알을 쏠 수 없게 만들고 싶다. 즉, 총알을 쏘는 속도를 제어하고 싶다는 말이다. 그래서 생각해낸 생각이 아래와 같다. 플레이어 스크립트에서 Disable, 과 Enable로 총을 쏠 수 있게 하고 총알 자체에서 스크린 밖으로 벗어난 것을 감지하면 그것을 플레이어에게 알려줌으로 Scene에 활성화 된 총알을 하나만 만들려고 한다. 여기 플레이어의 스크립트가 있다. 그렇게 구현하고자 한다면 #region Projectile Management public void EnableProjectile() { projectileEnab..

이벤트, Events [Unity]

이벤트하면 뭐 경험치 2배, 선물 주는 것 생각이 나는 여기선 그건 아니고 정말 이벤트다. 사건이라고... 해석하기보다 그냥 Event로 받아들이자. 알아보자 정의해보자 어떤 이벤트가 일어났으면 설정해놓은 메서드를 불러와서 실행시킨다. delegate에 메서드를 담아서 실행시키는 것과 비슷한 원리다. 다만 Event는 static으로 선언되어 객체없이도 어디서나 접근할 수 있게해놓는 것이다. 그렇게 이용한다고 한다. public delegate void ClickAction(); public static event ClickAction OnClicked; 이런 식으로 선언한다. delegate으로 먼저 선언해준다. 그 후 event 키워드를 사용하여 메서드를 써준다. ** static으로 설정하지 않아도..

어트리뷰트, Attributes [Unity]

아.. 사실 속성이란 뜻인데 속성이라고 하면 property도 있어서 그냥 해석하지말고 영어 그대로를 받아들이는 것이 낫다. 알아보자 또 정의부터 하고 넘어가야겠지. 어트리뷰트란 어셈블리, 모듈, 클래스, 구조체, 열거형변수, 생성자, 메소드, 프로퍼티, 필드, 이벤트, 인터페이스, 파라미터, 반환값, 델리게이트 같은 프로그래밍 요소에 대해 메타정보를 포함 시킬수 있는 기능을 말한다. 어트리뷰트에는 아래와 같은 곳에 쓰인다. Conditional - 메서드 실행 관여 DllImport - 외부 DLL 사용 Obsolete - 메서드 설명 Transaction - 트랜잭션 관리 WebService - 웹서비스 관련 Serializable -- 클래스 직렬화 ??????? 감이 안오는데..??? 뭐야? 유니..

델리게이트, Delegates [Unity]

델리게이트?? 뭔가 했다. 아직도 뭔가 하는 것 같다. 알아보자 우선 정의해보자 Delagate는 도대체 뭐하는 앤가? delegate 해석하면 "대신 ~해준다" 정도로 해석된다. 뭘 대신해준다는 것일까? Container for similar functions (or methods)다. 다시말해서 메서드를 참조해준다. 우리는 변수를 선언해서 값을 담을 수 있지만 메서드를 담을 수 있는 변수는 없다. delegate는 메서드를 담아준다. delegate void firstdelegate(); firstdelegate = hello(); public void hello() { print("Hello!"); } hello라는 메서드를 firstdelegate가 참조한다. 어떻게 사용하느냐? 1. delega..

아핀 변환, Affine Transformation [게임수학]

벡터 공간 -> 변환을 배운 것처럼 아핀 공간 -> 변환을 배워보자. 우리가 실제로 게임에서 다룰 모델들은 아핀 공간에 존재한다. 왜 벡터가 아니라 아핀 공간에서 다루느냐? 아핀 공간에는 방향과 크기만 존재하는 것이 아니라 "위치"라는 것이 존재한다. 게임에서 역시 "위치"란 것에 벗어날 수 없기에 실제로 사용을 하려면 아핀 변환이 필요하다. 알아보자 우리는 선형변환 - 크기 변환, 방향 변환을 배웠다. 아핀 공간에서는 어떻게 적용된다는 말일까? 어떤 모델이든 아핀 공간에 있는 모델들은 점들의 집합이라고 했다. 그 점들이 어떤 식으로 있느냐가 모델을 만든다고 했다. ++Vertex가 모여 모델을 이룬다. ** 점들의 개수에 따라 모델의 질이 달라진다. 그 점 중에서도 모델을 위치시키기 위해서 다른 점이 ..

아핀 공간, Affine Space - 3 [게임수학]

이제 마지막이다. 3D 게임에 가장 많이 쓰이는 삼각형에 대해 공부해보자 왜 삼각형이냐..? 사각형이 아니라? 사실 사각형이 삼각형 2개다. 가장 작은 도형이 삼각형이란 얘기다. 삼각형보다 큰 도형들은 다 쪼개버릴 수 있다. 또한 삼각형은 세 점이 항상 동일 평면 위에 존재할 수 있는 유일한 도형이다. ** 삼각대가 왜 다리가 3개?? -> 평면을 만들 수 있어서 중심을 잡는 것 삼각형에 색을 칠하면 그제서야 우리는 볼 수 있다. 삼각형이 이루는 3차원 모델 함 배워보자 선들로 닫혀진 공간이 바로 삼각형이 된다. ++ 사실 다각형이라고 하는 경우가 더 많다. (Polygon) 이 폴리곤을 이루는 점을 Vertex 라고 부르고 삼각형은 볼록다각형, convex polygon 이라고 한다. 왜 볼록이라고 하..

아핀 공간, Affine Space - 2 [게임수학]

저번 시간에는 선을 배웠으니 이제 면을 배워볼 시간이다. 선을 만들 때 두 점의 아핀 조합을 통해 만들었다. 면을 만들 때는 세 점의 아핀 조합을 통해서 만든다. 알아보자 면도 매개변수 방정식으로 표현될 것 같다는 느낌이 든다. 맞다. 한 평면에 점 3개 A, B, C가 있다면 저렇게 표현할 수 있다. 어디서 많이 봤다. 평면의 방정식에서 본거 같은데? 점과 점의 뺄셈 계산으로 벡터를 만들어서 점 하나와 2개의 벡터 계산으로 바꿀 수 있다. ++3차원 공간에서 선을 표현할 때는 매개변수 방정식으로 많이 표현하지만 ++3차원 공간에서 면을 표현할 때는 매개변수 방정식도 괜찮지만 일반화해서 나타낼 수 있다. -> 3D 게임에서 평면을 다룰 땐 매개변수보다 일반화 방정식이 더 이해하기 편함. 뒤에 이유 나옴 ..

아핀 공간, Affine Space [게임수학]

행렬, 벡터, 선형변환에 대해 공부해봤다. 행렬과 벡터는 바꿔서 표현이 가능하고 선형변환해도 성질은 유지된다. 그렇다면 위치는 어떻게 표현해야할까? 벡터는 크기와 방향만 가지므로 정적인 위치를 표현하기에는 무리가 있다. 그래서 우리는 점,Point 을 쓴다. 어떠한 위치를 표현할 때 좌표로 그 해당 지점을 말한다. 우리가 점을 찍는다고 말할 수 있는 공간을 아핀 공간이라고 한다. 알아보자 아핀 공간이라는 말이 익숙치가 않다. 일반적으로 유클리드 공간은 아핀 공간이지만 벡터 공간이라고도 한다. 아핀 공간의 정의 자체가 벡터공간을 필요로하기 때문이다. 아핀 공간으로 벡터 공간을 형성할 수 있다고 알고 이해해보면 되겠다. 일반적으로 직교좌표계에서 점은 원점으로부터 각 축에 대해서 얼만큼 떨어져 있는가로 표현된..

쿼터니언(사원수), Quaternions

//21.12.17 업데이트 회전에 관해서 오일러와 쿼터니언이 있다. 우리가 상식으로 알고 있는 것은 오일러이고 오일러를 보완하기 나온 것이 쿼터니언이다. 알아보자 이해하기 위해선 복소수를 알고 가야 한다. 정의부터 해보자 오일러는 무엇이고 쿼터니언은 무엇인가 오일러는 우리가 알고 있는 상식대로의 rotation이다. X,Y,Z 축이 있고 이 3축에 대해 회전을 표현하는 것이다. 하지만 이렇게 X,Y,Z로 회전을 표현할 수 있다면 쿼터니언의 필요성을 못느꼈을 것이다. 단순히 각 축에 대해서 세 개의 각도를 지정하는 것만으로는 회전이 고유하게 정해지지 않는다. 더군다나 회전행렬에 대해 교환법칙이 성립하지 않는 경우를 봤기때문에 더 그렇다. -> 즉, 회전시키는 순서가 다르면 해당 각을 똑같이 돌리더라도 결..

728x90
반응형