스프라이트와 일종의 사용자 생성 모양 사이의 충돌을 감지하는 방법.
예를 들어. 화면에 일부 물체가 있습니다. 사용자는 손가락을 잡고 개체 주위에 원 모양을 그립니다 (선택 규칙은 스프라이트 주위에 원을 그리는 것이지만 그림 모양은 다양 할 수 있습니다). 선택한 객체를 감지해야합니다.
스프라이트와 일종의 사용자 생성 모양 사이의 충돌을 감지하는 방법.
예를 들어. 화면에 일부 물체가 있습니다. 사용자는 손가락을 잡고 개체 주위에 원 모양을 그립니다 (선택 규칙은 스프라이트 주위에 원을 그리는 것이지만 그림 모양은 다양 할 수 있습니다). 선택한 객체를 감지해야합니다.
답변:
셰이프가 주로 사용자의 선 세그먼트 (또는 제어점이있는 베 지어 곡선)로 그려지는 경우 Separating-Axis-Theorem 으로 널리 사용되는 알고리즘을 구현할 수 있습니다 . 간단히 말해 : 모양이 겹치지 않는 축 (방향을 나타내는 단위 벡터)이 있으면 (투영 된 값이 양의 차이를 나타내지 않음) 개체가 겹치지 않습니다. 나는 이것을 과거에 사용했으며 매력처럼 작동했습니다.
Crayon Physics 에서처럼 모양을 손으로 그린 경우 직선 배열을 잡고 각 모양과의 충돌을 확인할 수 있습니다. 직선에도 불구하고 베 지어 곡선 또는 이와 유사한 것을 사용할 수 있습니다 .
접근 방식은 비트 맵인지 벡터인지에 따라 선택한 데이터 구조에 따라 다릅니다.
첫 번째 접근 방식은 임의의 복잡한 모양을 처리 할 수 있으며 구현이 간단하지만 더 많은 메모리를 사용합니다. 실제로 압축을 사용하여 메모리 오버 헤드를 줄이고 계층 적 데이터 구조 (octree)를 사용하여 속도를 높일 수 있습니다 ...
두 번째 접근 방식은 구현하기가 쉽지 않지만 더 많은 처리 능력을 사용합니다.
각 경우에 중요한지 측정하십시오. 구현하기가 더 쉽기 때문에 첫 번째 작업을 시도합니다. 행운을 빕니다. :)