2014-12-07 1 views
1

안녕하세요, 나는 또한 센서 역할을하는 원형 충돌을 만드는 방법을 알고 싶습니다. 예를 들어, 플레이어가 적의 반경에 들어가면 적이 플레이어를 쫓기 시작할 것입니다. 내가 시도한 것을 바탕으로, 나는 RECT SpriteRect 인 충돌 상자 만 사용하고 있습니다. 그러나 그것은 그 원을 위해 충분히 정확하지 않을 것입니다. 나는 을 사용하여 벡터 사용에 대해 생각하고 있었지만 변형이 잘되지 않았습니다. 이걸 어떻게 달성 할 수 있는지 도와주세요. enter image description here원형 충돌 감지를 만드는 방법은 무엇입니까? C++

+2

나는 그림을 좋아한다. – Quest

+0

@Quest 하하하는 그저 개념 일 뿐이다. 실제 게임을 만들지 않습니다. 그냥 배우기. 이전에 스텐실을 사용하여 만들었습니다. 모든 드래그 앤 드롭 이후 슈퍼 쉽습니다. 그래서 지금은 C++을 배우기 위해 최선을 다하고 있습니다 :) 당신이 원한다면 그것을 확인하십시오 : [Lost Dungeon] (http://www.kongregate.com/games/yawnm3/lost-dungeon) – Student

답변

6

반지름이 (xc, yc) 인 원 안에 점 (xa, ya)이 있습니까?

피타고라스를 기억하나요? - 두 점 사이의 거리를 결정합니다. 원의 중심까지의 거리가 반지름보다 작은 지 여부를 확인하려면 반지름이 지정된 원 안에 물체가 있는지 확인해야합니다.

bool IsPointInCircle(float xa, float ya, float xc, float yc, float r) 
{ 
    return ((xa-xc)*(xa-xc) + (ya-yc)*(ya-yc)) < r*r; 
} 

두 원 사이의 충돌 감지도 마찬가지로 쉽습니다. 두 원의 반지름의 합으로 'r'을 입력하면됩니다. 그것이 원이 접촉 할 때 두 센터 사이의 거리가 될 것입니다.

사각형과 원 간의 충돌 감지를 수행하려면 선 간격을 계산해야합니다. 원은 충돌 감지를 수행하는 데 가장 쉬운 모양입니다.

+0

for 3dim (xa-xc) + (ya-yc) (ya-yc) + (za-zc) (za-zc) – Quest

+0

@Quest, 당신은 다음과 같이 가깝습니다 : 여기에 3d 분야가 있습니다. (ya-yc) + (za-zc) (za-zc)) Zuu

관련 문제