|
为什么玩家的Y坐标一直都没有变呢
我想求得地形模型上的高度,可我刚试了一下,高度一直都没有变化,按道理不回这样啊
下面是算模型上三角形的坐标
还有就是如果我地形模型进行过缩放操作,会对坐标影响吗
VOID rayHCollision(CPlayer* player)
{
D3DXVECTOR3 tmpPos = *player-> os();
tmpPos.y -= 500;
D3DXVECTOR3 ray = *player->Pos()-tmpPos;
D3DXVECTOR3 cross;
BOOL hit;
DWORD indexFace;
FLOAT u,v;
D3DXIntersect(m_pMesh, &tmpPos, &ray,&hit,&indexFace,&u,&v,NULL,NULL,NULL);
if(hit)
{
ULONG index1,index2,index3;
D3DXVECTOR3 *v1,*v2,*v3;
if(m_IB_Desc.Format == D3DFMT_INDEX16)
{
index1 = (WORD)iData[3 * indexFace];
index2 = (WORD)iData[3 * indexFace + 1];
index3 = (WORD)iData[3 * indexFace + 2];
}
else if(m_IB_Desc.Format == D3DFMT_INDEX32)
{
index1 = *(DWORD*)iData[2 * (3 * indexFace)];
index2 = *(DWORD*)iData[2 * (3 * indexFace + 1)];
index3 = *(DWORD*)iData[2 * (3 * indexFace + 2)];
}
v1 = (D3DXVECTOR3*)(vData + index1 * step);
v2 = (D3DXVECTOR3*)(vData + index2 * step);
v3 = (D3DXVECTOR3*)(vData + index3 * step);
cross = *v1 + u * (*v2 - *v1) + v * (*v3 - *v1);
player->SetHigh(cross.y);
}
else
player->Pos()->y = player->Pos()->y+5;
} |
|