上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
ご自由にお使いください

D3DXVECTOR3 vPos(0,0,0); //ミサイル座標
D3DXVECTOR3 vDir(0,1,0); //ミサイル方向ベクトル
D3DXVECTOR3 vTargetPos(3,2,10); //ターゲット座標
float fSpeed = 1.0f;
//--------------------------------------------------
D3DXVECTOR3 vTargetDir = vTargetPos - vPos; //ミサイルから見たターゲットの方向
D3DXVec3Normalize(&vTargetDir , &vTargetDir ); //正規化
vDir += vTargetDir * 0.1; //ミサイル方向にターゲット方向を加算(そのままだと値が大きいので適当にマジックナンバーで減衰)
D3DXVec3Normalize(&vDir, &vDir); //正規化
vPos.x += vDir.x * fSpeed; //ミサイル座標更新
vPos.y += vDir.y * fSpeed;
vPos.z += vDir.z * fSpeed;

ho-mingu.jpg
ho-mingu2.jpg
boon.jpg

//メモ
//ラジアン→方向ベクトル
D3DXVECTOR3 vRot(1.5,0.7,0); //適当
D3DXMATRIX matX,matY;
D3DXMatrixRotationX(&matX, m_vRot.x);
D3DXMatrixRotationY(&matY, m_vRot.y);
D3DXVec3TransformCoord(&vDir, &D3DXVECTOR3(0,0,1), &(matX*matY));
D3DXVec3Normalize(&vDir, &vDir);
//逆
float xzlen = sqrt(vDir.z*vDir.z + vDir.x*vDir.x);
vRot.x = atan2f(xzlen, vDir.y) - ToRadian(90);
vRot.y = atan2f(vDir.x, vDir.z);

もっといいやり方があったら教えてくださいm--m
スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。