나는 어떤 방향 으로든 총알이 날 수있는 게임을 만들고있다. 방향과 크기를 가진 벡터로 만들어서 방향을 바꾸도록해야합니다. 이 방법을 구현하는 방법을 모르겠습니다.벡터 도움말
감사
나는 어떤 방향 으로든 총알이 날 수있는 게임을 만들고있다. 방향과 크기를 가진 벡터로 만들어서 방향을 바꾸도록해야합니다. 이 방법을 구현하는 방법을 모르겠습니다.벡터 도움말
감사
입니다. 첫째, 저는 총 거리를 가지고 시작합니다. 이것은 간단합니다 :
distance_y = total_distance * sin(2 * pi * angle/360)
distance_x = total_distance * cos(2 * pi * angle/360)
:
total_distance = velocity * time
이는 2D 게임이다 가정하면, 다음 (주어진 각도) X 및 Y 구성 요소로 총 거리를 헤어 사인 & 코사인을 사용해야합니다 물론
pos_x = distance_x + start_pos_x
pos_y = distance_y + start_pos_y
, 당신은 0을 확대하는 좋은 수업이 모든 포장 수 :
마지막으로, 거리 x는/Y는 총알의 시작 위치에 따라 오프셋한다은 필요에 따라 연마합니다.
당신은 위치, 방향 벡터 및 속도를 포함하는 총알 클래스를 가질 수있다. 매 순간마다 다음과 같이 총알 위치를 업데이트 할 수 있습니다.
position += direction * veclocity;
여기에서는 방향이 단위 벡터라고 가정합니다.
이 같은 뭔가 시작을 만들 것입니다 :
struct Vector3f {
float x, y, z;
};
struct Bullet {
Vector3f position;
Vector3f velocity;
};
inline const Vector3f& Vector3f::operator+=(const Vector &other)
{
x += other.x;
y += other.y;
z += other.z;
return *this;
}
inline const Vector3f& Vector3f::operator*=(float v)
{
x *= v;
y *= v;
z *= v;
return *this;
}
그런 다음 bullet.position += velocity
와 총알의 위치를 업데이트 할 수 있습니다 (벡터 또한이 구성 요소를 별도로 추가하여 수행됩니다). 속도 벡터에는 방향과 속도 (= 벡터의 크기)가 모두 포함됩니다.
그리고 총알이 모든 프레임의 속도가 느려지는 경우 bullet.velocity *= 0.98
(여기서 0.98은 분수를 나타냄)과 같은 작업을 수행 할 수 있습니다. 스칼라와 벡터 곱셈, ... 스칼라 각 성분을 곱하여 크리스토프
저는 벡터와 행렬 수학만큼 간단하다고 생각합니다. 실제로 수학을하는 법을 배우는 동안 가치가있을 것입니다. 그가 게임에 참여하기를 원한다면, 트랙을 따라 문제를 해결하기 위해 방정식과 그 목적을 알아야 할 것입니다. 어떻게 제품 및 교차 제품이 S.A.T – Craig
임의의 방향과 벡터를 생성 하시겠습니까? –
저는 각도와 크기를 매개 변수로 전달하고자합니다. 본질적으로 어떤 방향 으로든 갈 수있는 글 머리 기호 인 경우, 크기가 원하지 않는 글 머리표 인 경우 – jmasterx
을 입력하십시오. 위치, 방향, 속도 및 시간 간격 (마지막 업데이트 이후 시간)이 필요합니다 – Craig