컴퓨터 그래픽스 : 수학 9

[게임 프로그래머 입문 올인원] 게임수학 : 포트리스 모작 #3 (100, 101강)

C. 포트리스 모작 #3 6. 포신과 총알 구현하기 w, s키를 누르면 포신의 각도가 변경되도록 구현해볼것임 a. 플레이어 키값에 따른 값 설정하기 clamp : 어떤영역에 포함되기 원할 때 사용하는 함수 b. 포신 값에 따라 UI 설정하기 c. 총알 만들기 1 ) 기본 총알을 만들기 2) 위 총알을 생성해주기 d. 총알 특성 구현하기 1) 스피드 구현하기 여기서 총알이 소멸되면, 턴을 종료시켜야하는데 턴을 종료시키는 코드는 ChangePlayerTurn에 있음 ➡ 따라서 현재 씬을 가져오는 코드를 생성해줘야함 2) 포물선 구현하기 👉 먼저 속도와 가속도에 대해서 공부하기 [게임 프로그래머 입문 올인원] 게임수학 : 속도와 가속도 (101강) A. 속도와 가속도 : 물리 1. 속도와 가속도의 기초 a. ..

[게임 프로그래머 입문 올인원] 게임수학 : 속도와 가속도 (101강)

A. 속도와 가속도 : 물리 1. 속도와 가속도의 기초 a. 속도와 가속도란? 👉 근데 게임에서는 여기까지 알 필요는 없고 그냥 속도와 가속도의 공식만 알고있으면 됨 출처 :https://www.inflearn.com/course/%EA%B2%8C%EC%9E%84-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8-%EC%9E%85%EB%AC%B8-%EC%98%AC%EC%9D%B8%EC%9B%90-rookiss#curriculum [게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버 - 어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘,..

[게임 프로그래머 입문 올인원] 게임수학 : 포트리스 모작 #2 (100강)

B. 포트리스 모작 #2 5. 플레이어 턴제 만들기 위에서 만든 플레이어 특성으로 턴제를 구현 플레이어 아이디, 플레이어 턴을 구현해주고 추가적으로 포신의 각도도 추가해줌 a. 플레이어 턴제 생성하기 b. 플레이어 UI 생성하기 각 플레이어가 가지고 있어야 하는 UI를 넣어주기 🔎 UI와 구현에 대한 고민하기 👉 먼저 UIManager의 싱글톤인 특성을 가지고 SetRemainTime을 고쳐 시간을 관리해보자 (결론적으로 말하면 문제점이 있음) c. 게임씬에서 시간과 턴제 구현하기 플레이어턴은 0번부터 시작인데 1인이유는 아래에 나옴! 이렇게 위에서는 UI에서 데이터랑 관련된 코드를 들고있는데 규모가 커지면 문제가 크게 생김 UI는 UI를 위해 정보를 들고있어야 하지 원본 데이터와 비슷한 느낌으로 사용하..

[게임 프로그래머 입문 올인원] 게임수학 : 포트리스 모작 #1 (99강)

A. 포트리스 모작 #1 1. 포트리스 뼈대잡기 a. UIManager 및 리소스 추가하기 UIManager은 UI의 세부적인 좌표 엔진내용 그려줘야하는 UI의 좌표를 다 잡아줘서 설정해주는 용도 b. 수치를 나타내는 Values.h 파일 추가하기 c. ResourceManager 수정하기 d.Fortress 게임 뼈대잡기 MenuScene : 게임 시작하자마자 보여줄 화면 FortressScene : 게임화면 둘 다 Scene을 상속받아서 구현 e. SceneManager에 Scene 추가해주기 2. 씬 구현하기 a. MenuScene 구현하기 ➡ 온라인 게임이면 여기서 네트워크 통신이 들어가게 됨 b. FortressScene 구현하기 💙 UIManager처럼 UI를 Manager로 사용하는게 좋을까..

[게임 프로그래머 입문 올인원] 게임수학 : 역삼각함수 (98강)

A. 역삼각함수 1. 역삼각함수 기초 a. 함수와 역함수 역함수는 항상 존재하지 않고, 1:1 대응이여야지만 존재한다 b. 삼각함수와 역삼각함수 이렇게 동일한 값이 무한으로 나와서 역함수가 어렵지만 범위를 강제로 지정해서 사용할 수 있음 즉, cos의 val가 -1~1이라고 하면 각도는 0~180 동일하게 sin, tan의 val가 -1~1이라고 하면 각도는 -90~90 원하는 벨류를 넣어줘도 원하는 값이 튀어나온다는 보장이 없음 🌟 역삼각함수에서 튀어나온 각도의 범위는 0~180 / -90~90라는 점을 꼭 기억해야 함 2. 게임에 역삼각함수 더하기 백스텝 : 뒤에서 타격하면 가산점수처럼 각도계산을 해서 다른 점수를 줘야 할 때 a. 몬스터 방향 정보 추가하기 b. 몬스터 생성 및 방향 만들기 여기서 ..

[게임 프로그래머 입문 올인원] 게임수학 : 외적 (97강)

A. 외적 1. 외적의 기초 a. 외적이란? 외적의 값은 벡터 (내적처럼 스칼라가 아님) 2D에서는 외적이라는 개념이 존재하지 않지만 사용함 (z축 값을 0이라고 전제) 내적은 반대로 해도 값이 그대로이지만 외적은 반대로 하게되면 (위에서는 bXa) 음수값이 나옴 = 즉 시계방향/ 반시계 방향에 따라 k의 방향이 바뀌는게 핵심! b. 외적 응용 예시 즉, P가 A와 B에 들어와있는지 체크하기 위해 사용할 수 있음 2. 게임에 외적 더하기 a.Vector에 외적 추가하기 b. 몬스터 수정하기 Monster.cpp에서 몬스터 업데이트 하는 (내적) 코드는 날려주기 c. 마우스 포지션과 삼각형 외적하기 코드를 조금 더 다듬으면 아래와 같이 됨 HTML 삽입 미리보기할 수 없는 소스 #include "pch.h..

[게임 프로그래머 입문 올인원] 게임수학 : 내적 (96강)

A. 내적 1. 내적의 기초 a. 내적이란? (dot product) 🌟V1*V2에 cos = 스칼라 곱이라고도 함 V1 * V2인데 곱하기가 아니고 그냥 내적이라는 뜻 내적의 결과물은 방향에 대한 개념은 날아가고 크기만 남음 = 스칼라 b. 내적 응용하기 1) 내적이 0인경우 : 직각 2) 내적이 >0인경우 : 90도 보다 작다 3) 내적이

[게임 프로그래머 입문 올인원] 게임수학 : 벡터 (95강)

A. 벡터 1. 벡터의 기초 a. 스칼라와 벡터 1) 스칼라 : 🌟 고정되어 변하지 않는 값 2) 벡터 : 크기와 방향을 가지고 있음 벡터는 시작점이 없고 크기+방향만 가지고 있음 중력, 바람 등 방향을 나타내야하면 거의 벡터를 사용함 항상 목적지에서 시작점을빼면 값이 나온다! b. 벡터의 특징 1) 벡터 곱셈 2) 벡터끼리의 덧셈과 뺄셈 c. 벡터의 법칙 1) 교환법칙 2) 결합법칙 d. 벡터의 크기 구하기 위에서 Vab는 5였는데 이 5의 값을 1로 만든다는 소리 즉, 방향만 남기고 싶은 것 Vab를 x라고 한다면, x를 1로 만들기 위해서는 1/x를 곱해야 함 즉, 정규화를 하면 원래 가지고 있던 Vab값에 1/x을 각 x, y값에 곱해준것과 같음 💙 사용할 때 크기는 플레이어끼리 거리를 계산할 때..

[게임 프로그래머 입문 올인원] 게임 수학 : 삼각함수와 포신 구현하기 (94강)

A. 삼각함수 1. 삼각함수 기초 a. 삼각함수를 알아야 하는 이유 b. 삼각함수 기초 : 피타고라스 정리 c. 단위 원 (unit circle) 각도를 재는 두가지 방법이 있음 각도법, 호도법 2. 게임에 삼각함수 더하기 a. 슈팅게임에 적용하기 여기서 더해줘야 하는 x(cos),y(sin) 으로 값을 구하기 b. 포신의 정보 생성하기 포신은 Player가 가지고 있으니 Player에서 작성 c. 포신 출력과 색상 변경하기 d. 각도에 따라 미사일 나가기 미사일이 각도에 따라서 나가야 하기 때문에 미사일에 정보를 추가해주기 출처 : https://www.inflearn.com/course/%EA%B2%8C%EC%9E%84-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8..