안녕하세요 교수님, 강의 덕분에 언리얼 공부 열심히 하고 있습니다.
const FVector Start = GetActorLocation() + GetActorForwardVector() * GetCapsuleComponent()->GetScaledCapsuleRadius();
const FVector End = Start + GetActorForwardVector() * AttackRange;
FVector CapsuleOrigin = Start + (End - Start) * 0.5f;
float CapsuleHalfHeight = AttackRange * 0.5f;
그런데 이런 계산식은 어떻게 떠올리는 건가요? 몇 년 하다보니 논리적인 로직을 짜는건 이해도 쉽고 어느정도 괜찮은 것 같은데 수학적 계산이 필요할 때는 복잡한 계산이 아니더라도 이런 단순한 계산식조차 어떻게 구현해야할지 전혀 모르겠습니다. 이걸 못하니까 코드를 간단명료하게 효율적으로 짜지를 못하고 복잡하고 비효율적인 방식으로 짜는 것 같은 느낌이구요. 구현을 하다보면 이렇게 할게 아닌것 같은데, 분명히 계산식으로 뚝딱 될 것 같은 기능인데 그걸 대체 어떻게 해야할지 모르겠는 경우가 많습니다. 예제같은걸 많이 보고 익히면 필요할 때 사용할 수는 있겠지만, 이런 계산식을 스스로 생각해낼 수 있는 것은 다른 문제인 것 같습니다. 대학교는 컴퓨터공학을 전공해서 행렬과 벡터는 어느정도 이해하는데, 특성화고등학교를 나와서 고등학교 일반 교과의 수학을 전혀 안배운 상태이긴 합니다. 기초가 없고 어떤 식을 보면 이게 무슨 의미인지 이해하는 정도라고 하면 될 것 같습니다. 그만큼 수학 계산 자체에도 경험이 많이 없긴 하구요. 수학 공부는 따로 하려고 하고 있긴 합니다. 게임 수학 강의 하신 것도 들어보려고 오늘 구매를 했습니다만 제 상태가 단순히 그런 수학적 지식이 부족해서 그런건지 수학적으로 접근하는 감이 없어서 그런건지.. 이게 계속 프로그래밍을 하다보면 이건 이런식으로 하면 되겠다 하는 경험으로 커버가 되는 영역인가요? 아니면 중,고등수학부터 제대로 다시 공부하면서 수학적 지식을 쌓고 계산 경험 이 많아지면 나아질까요? 제가 정확히 뭐가 부족한 상태인지, 뭘 어떻게 해야할지를 모르겠으니 너무 막막합니다.
긴 글 읽어주셔서 감사합니다. 도저히 물어볼 데가 없어서 올려봅니다..
정말 감사합니다! 덕분에 생각이 많이 정리가 되었습니다. 수학이라는 학문적 지식의 부족함보다는 이런식의 게임 수학 응용이 익숙하지 않아서 그랬던 점도 큰 것 같네요. 무작정 수학을 공부하기 보다는 강의를 보면서 필요한 개념 지식 정보를 익히고, 이런식으로 응용되어 사용하는 예제를 찾아보면서 교수님 말씀대로 직접 그려보고 방법을 깨우치는 것이 도움이 될 것 같습니다. 어느정도 방향이 잡히니 마음이 한결 낫네요. 감사합니다. 앞으로도 열심히 공부해보겠습니다!!
답글
안녕하세요.
아마 많은 고민이 있을 것 같습니다.
저 같은 경우도 처음부터 게임 수학을 잘했던 것은 아니고 꾸준히 하다보니 어느 순간에 딱 깨달음이 와서 점프업을 했던 것 같습니다.
게임 수학을 가르친 후, 우리 학생들 후기를 들어보면, 과정이 생소하지만 중3, 고1 수준으로 이해 못할 것은 아니다라는 이야기를 하더라고요. 온라인 강의 수강하는 분들 보면 방향성을 잡는 분도 계시고 못 잡는 분도 계시는데, 못잡는다고 해서 크게 문제가 있다고 생각하진 않습니다. 단지 시간이 필요할 뿐인거지요.
중고등학교 수학을 다시 보는건 별로 권장드리진 않고요, 공부를 진행하시면서 단어와 개념 레벨에서 현재 내가 모르는 것이 무엇인지를 확인한 후에, 강의에서 다루지 않는 내용은 책이나 영상을 통해 천천히 하나씩 채워나가는게 좋다고 생각합니다. 수학을 빠르게 익힐 수 없는 학문입니다.
다만 중고등학교 수학은 입시를 위한 수학이라 다시 공부한다면 게임과 무관한 내용을 많이 공부하게 될 것 같아요.
위의 코드로 돌아가서 먼저 종이와 펜으로 시뮬레이션 해보는 것을 권장합니다.
원을 그리고, 캡슐의 단면을 그린 후에 이를 어떻게 계산할지 고민하면서 식을 만들고, 이런 경험이 쌓이면 나중에는 척척 공식이 만들어질겁니다.
이 답변이 도움이 될 지 모르겠습니다. 계속 궁금한 내용은 질문 주세요~
답글