Привет, я делаю шутер от первого лица в DirectX 10, используя c ++.
Я бы выложил свой код для помощи, потому что я знаю, что это стандартная практика, но это слишком много, чтобы надетьВот.Во всяком случае, я не знаю, смогу ли я получить то, что у меня работает, поскольку пули просто идут в дурацких направлениях, начиная с пистолета.
Мой вопрос здесь, кто-нибудь знаеткак просто заставить пулю двигаться к перекрестию?
У меня есть перекрестие перед пистолетом (на самом деле это просто кубические объекты в форме перекрестия).
Кто-нибудь знает способ в DirectX10?используя c ++, чтобы заставить что-то просто двигаться к точке с заданной скоростью, потому что, конечно, я могу просто заставить свои пули двигаться к перекрестию, и тогда мне не нужно беспокоиться о коде, который у меня есть на данный момент, который в основном определяет, в каком направлении стоит пистолети выходя под этим углом (что он вообще не работает должным образом).
Я полагаю, если есть способ заставить пулю двигаться к определенной точке, тогда это намного проще, чем то, что я делаю сейчас.
Я знаю, что это не было особенно ясно, но любая помощь будет очень ценной, поскольку я должным образом застрял в этом.
Вот функция для направления маркера:
void BDirection(float speed){
float frameTime = 0.01;
initVecDir.x = 0;
initVecDir.y = 0;
initVecDir.z = 1;
D3DXVec3TransformCoord(&newVecDir, &initVecDir, &matAllRotations2);
D3DXVec3Normalize(¤tVecDir, &newVecDir);
float adjustedSpeed = speed*frameTime;
for (int i =0; i<CountB; i++){
BULLETS[i].initVec.x += currentVecDir.x*adjustedSpeed; BULLETS[i].initVec.y += currentVecDir.y*adjustedSpeed;
BULLETS[i].initVec.z += currentVecDir.z*adjustedSpeed;
}
}
рендеринг пули:
for(int i =0; i< CountB; i++){
D3DXMatrixRotationX( &matBulletRotX, BULLETS[i].RotVec.x);
D3DXMatrixRotationY( &matBulletRotY, BULLETS[i].RotVec.y);
D3DXMatrixRotationZ( &matBulletRotZ, BULLETS[i].RotVec.z);
D3DXMatrixScaling(&matScale2, 1,1,1);
D3DXMatrixTranslation (&matTranslate2, BULLETS[i].initVec.x, BULLETS[i].initVec.y, BULLETS[i].initVec.z);
matAllRotations2 = matBulletRotX * matBulletRotY * matBulletRotZ;
matBulletWorld = matAllRotations2 * matScale2 * matTranslate2;
mWorldViewProjection = matBulletWorld * mView * mProj;
// Update the effect's variables.
V( g_pWorldViewProjection->SetMatrix( (float*)&mWorldViewProjection ) );
V( g_pWorld->SetMatrix( (float*)&matBulletWorld ) );
V( g_pTime->SetFloat( (float)fTime ) );
V( g_pCameraPosition->SetFloatVector( (float*)g_Camera.GetEyePt() ) );
for ( UINT iSubset = 0; iSubset < BULLETS[i].bullet.GetNumSubsets(); ++iSubset )
{
RenderSubset2( iSubset, i );
}
}