2012-06-23 6 views
-1

명확하게 편집 됨 : 코드의 두 번째 부분에 대한 추가 정보를 찾고 있습니다. 두 벡터 객체를 정의하지만, 왜 direction = normalize(enemyPos - playerPos); 대신 direction = normalize(playerPos - enemyPos);입니까? enemyPos은 어디에 있습니까? 실제로 코드의 비트는 무엇입니까 을 수행하고 playerPos = playerPos + direction * velocity;은 무엇을합니까?이 코드의 부분은 무엇을합니까?

그래서 저는 C#을 독자적으로 배우려고합니다. 내 문제는 코드를 볼 때 모든 부품이 무엇을하는지 알고 싶습니다.

내 질문은 두 가지입니다. 여기에 이런 종류의 것을 묻는 것이 좋습니다. 그리고 누군가 다음 코드를 설명 할 수 있습니까? 나는 각 부분이 나는 공간 촬영 종 업에 적 운동으로 바꿀 수 있도록 무엇을 의미하는지 배울 필요가

Vec2d playerPos; 
Vec2d direction; // always normalized 
float velocity; 

Specfically 나는 두 개의 2D 벡터 오브젝트의 이름을 지정하고, 변수를 만드는 위 얻을 수 아래의 코드 소위 말하는 속도. 하지만 정상화 된 주석이 무엇인지는 잘 모르겠습니다.

update() 
{ 
    direction = normalize(playerPos - enemyPos); 
    playerPos = playerPos + direction * velocity; 
} 
+0

네, 여기 이런 질문을하는 것이 좋습니다. 적어도 그렇게 생각합니다. –

+1

사실, 그렇지 않습니다. :-) [StackOverflow는 언어 튜토리얼 사이트가 아닙니다] (http://meta.stackexchange.com/a/134609/172661). 특정 질문이 있으면 여기에서 질문 할 수는 있지만 일반적인 게시물에는 "이 코드가 무엇인지 말해 줄 수 있습니까?"라고 묻는 코드 블록이 있습니다. 정말로 적절하지 않습니다. 거기에 거의 모든 언어 튜토리얼 사이트의 ** 톤 **가 있습니다 - 그래서 그들 중 하나가 될 수 없습니다. [FAQ] (http://stackoverflow.com/faq)는 여기에 무엇이 적합한 지에 대해 명확합니다. (또한 여기에 게시물 당 하나의 질문을해야하므로 확실한 대답을 선택할 수 있습니다.) –

+0

@KenWhite 감사합니다. – draiden

답변

2

정규화 된 벡터는 unit vectors으로 변환됩니다. 따라서 방향은 unit vectors의 그룹이거나 논리적으로는 여러 방향의 비율입니다. 따라서이 비율에 속도를 곱하면 속도가 velocity 인 적의 방향으로 플레이어가 퇴장합니다.

1

정규화 된 벡터는 벡터의 길이가 항상 1 (단위 벡터)임을 의미합니다. 방향은 크기와 관련이 없으므로 벡터가 너무 커지면 (계산의 정확성에 영향을 미침) 벡터가 길이 1로 단축됩니다 (내부적으로 좌표는 길이의 원래 벡터). 이것은 수학적 개념에 가깝습니다.