Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
D3DXVECTOR3 vNewCamDir; BOOL bHit; DWORD dwFaceIndex; float fDist; D3DXVECTOR3* avVertices; D3DXVECTOR3 avTri[3]; D3DXVECTOR3 vNormal; D3DXIntersect(Level.m_Model.pMesh,&vLook,&vCamDir ,&bHit,&dwFaceIndex, NULL,NULL,&fDist,NULL,NULL); if (!bHit) fDist=10.0f; if (fDist>m_fBSphereRadius*3.0f) { m_vPosition[0]=vLook; } else { Level.m_Model.pMesh->LockVertexBuffer(D3DLOCK_READONLY,(void**)&avVertices); avTri[0]=avVertices[dwFaceIndex*3+0]; avTri[1]=avVertices[dwFaceIndex*3+1]; avTri[2]=avVertices[dwFaceIndex*3+2]; D3DXVECTOR3 e1=avTri[1]-avTri[0], e2=avTri[2]-avTri[0]; D3DXVec3Cross(&vNormal,&e1,&e2); D3DXVec3Normalize(&vNormal,&vNormal); Level.m_Model.pMesh->UnlockVertexBuffer(); D3DXVec3Cross(&m_vVelocity,&vNormal,&D3DXVECTOR3(0.0f,1.0f,0.0f)); } |
Anonymous
unregistriert
Anonymous
unregistriert
Zitat
wenn ich zwei vektoren addiere, gibt mir VC eine Fehlermeldung aus.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
float ScalarProduct(D3DXVECTOR3 v1,D3DXVECTOR3 v2) { return v1.x*v2.x+ v1.y*v2.y+ v1.z*v2.z; } m_vVelocity+=vNormal*ScalarProduct(vNormal,m_vVelocity); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
D3DXVECTOR3 vLook=m_vPosition[0]; if (aKey[DIK_LEFT] & 0x80) m_fAngle-=160.0f*D3DX_PI/180.0f*g_fTimePassed; if (aKey[DIK_RIGHT] & 0x80) m_fAngle+=160.0f*D3DX_PI/180.0f*g_fTimePassed; D3DXVECTOR3 vCamDir(sinf(m_fAngle),0.0f,cosf(m_fAngle)); if (aKey[DIK_UP] & 0x80) m_vVelocity-=vCamDir*10*g_fTimePassed; if (aKey[DIK_DOWN] & 0x80) m_vVelocity+=vCamDir*10*g_fTimePassed; m_vVelocity*=powf(0.1f,g_fTimePassed); if (m_vVelocity.x> 1.0f) m_vVelocity.x= 1.0f; if (m_vVelocity.y> 1.0f) m_vVelocity.y= 1.0f; if (m_vVelocity.z> 1.0f) m_vVelocity.z= 1.0f; if (m_vVelocity.x<-1.0f) m_vVelocity.x=-1.0f; if (m_vVelocity.y<-1.0f) m_vVelocity.y=-1.0f; if (m_vVelocity.z<-1.0f) m_vVelocity.z=-1.0f; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
vCamDir=D3DXVECTOR3(sinf(m_fAngle),0.0f,cosf(m_fAngle)); D3DXVECTOR3 vNewCamDir; BOOL bHit; DWORD dwFaceIndex; float fDist; D3DXVECTOR3* avVertices; D3DXVECTOR3 avTri[3]; D3DXVECTOR3 vNormal; D3DXVec3Normalize(&vNewCamDir,&vCamDir); D3DXIntersect(Level.m_Model.pMesh,&vLook,&vNewCamDir,&bHit,&dwFaceIndex, NULL,NULL,&fDist,NULL,NULL); //dwFaceIndex*=3; if (!bHit) fDist=10.0f; if (fDist>m_fBSphereRadius*3.0f) { m_vPosition=vLook; } else { Kollision ...} |
Zitat
warum m_vVelocity verringert werden muss, wenn ich [Pfeil oben] drücke
Werbeanzeige