
길찾기 알고리즘 중 하나인 A* 알고리즘에 대해 알아보자. 단순히 2D 타일맵에만 적용할 수 있다고 생각했는데 원리를 알고보니 가중치로 연결된 그래프에 모두 적용할 수 있는 방법이었다. 복잡한 공간도 다각형으로 분할한다면 A* 알고리즘을 적용시켜서 길을 찾을 수 있다. A* 알고리즘은 닫힌 목록과 열린 목록이 있고, 이 두 목록을 갱신하면서 길을 찾아간다. 현재 위치에서 갈 수 있는 위치에 대해 G, F, Parent를계산해서 열린 목록에 넣고, 열린 목록에서 최소 F값을 가지고있는 위치를 닫힌 목록에 넣은 후 반복한다. G : 해당 위치로 이동하기 위해 필요한 비용 F : G + 해당 위치에서 목표지점까지의 예상거리 Parent : 해당 위치로 오기 직전 위치 간단한 2D 길찾기 예제를 통해서 원리를 ..
게임 내에서 플레이어가 활동하는 세상을 맵이라고 한다. 맵의 종류로는 오픈월드, 인스턴스 던전 등 여러가지가 있다. 오픈월드의 경우 한번에 그 큰 맵을 다 로드하고 플레이 할 수 없기 때문에 여러 타일로 맵을 나누고 각 타일들을 필요할 때마다 로드하는 방법을 사용한다.타일로 나누어진 월드맵을 로드하는 방법은 크게 심리스 방식, 존 방식 2가지가 있다. 로드 방식에 따라 게임의 스타일도 다르기 때문에 심리스 월드, 존 월드 라고 부르기도 한다. 심리스(seamless)플레이어의 시야에 들어오는 맵을 미리 로드하는 방식이다. 주로 오픈월드 게임에서 사용하는 방법이다.장점 : 플레이어의 이동에 따라 필요한 부분을 바로 로드 하기 때문에 부드럽게 맵을 이동할 수 있다단점 : 초반 로딩이 길며, 플레이 도중에 계..
목표무조건 추격하는 미사일이 아닌 자연스럽게 타겟을 추격하는 미사일을 만든다. 이론방향 벡터를 점점 타겟 방향으로 회전시키면서 이동한다.시간이 지날수록 회전하는 속도가 빨라진다. 코드(ex:Cocos2d-x)void Bullet::update(float dt){ auto pos = this->getPosition(); // 현재 위치 저장 auto momoPos = momo->getPosition(); // 타겟의 위치 Vec2 toDir = momoPos - pos; toDir = Normalize(toDir); // 방향 단위벡터 계산 float cross = (toDir.x*direction.y) - (toDir.y*direction.x); // 현재 방향과 타겟으로의 방향과의 외적 (어느 방향으로..
- Total
- Today
- Yesterday
- database
- scala
- rxswift
- ios
- 자료구조
- Git
- 알고리즘
- mongoDB
- 드라마
- ue4
- Java
- C++
- C/C++
- Cocos2d-x
- C
- 국내여행
- game
- JSP
- machine learing
- 수학
- DesignPattern
- SHADER
- Spring
- SwiftUI
- 운영체제
- swift
- winsock
- OS
- SOCKET
- 데이터베이스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |