이글의 요지는 캐릭터가 어디에 있던지 간에(시아 범위 안에서) 계속 따라오는 적군 캐릭터의 AI입니다.

float CEnemy::CalcAI(CPlayer *pPlayer, float dTime)
{
        D3DXVECTOR3 vDist = (m_vPosition) - (pPlayer->m_vPosition);

        float fDist = D3DXVec3Length(&vDist);
        float fDistX = D3DXVec3Length(&vDist);
        if ( fDist > m_fSearchLength )//적군캐릭의 시아 밖에 있으면 걍 리턴함.
        {
                return -1.0f;
        }
        
        D3DXVECTOR3 vDir(0.0f, 0.0f, -1.0f);//회전매트릭스의 백터값.
        D3DXVECTOR3 vDirX(0.0f, 0.0f, 0.0f);//회전매트릭스의 백터값.
        D3DXMATRIX        matX;
        D3DXMATRIX        matY;
        D3DXMatrixRotationY(&matY, m_vAngle.y + D3DX_PI * 0.5f);
        D3DXMatrixRotationX(&matX, m_vAngle.x + D3DX_PI * 0.5f);
        D3DXVec3TransformCoord(&vDir, &vDir, &matY);
        D3DXVec3TransformCoord(&vDirX, &vDirX, &matX);
        D3DXVec3Normalize(&vDir, &vDir);
        D3DXVec3Normalize(&vDirX, &vDirX);
        D3DXVec3Normalize(&vDist, &vDist);

        fDist = D3DXVec3Dot(&vDir, &vDist);
        fDistX = D3DXVec3Dot(&vDirX, &vDist);

        if (m_fEnergy / m_fMaxEnergy > 0.7f)//적의에너지가 없으면..도망가는..
        {
                m_vAddAngle.y -= fDist * dTime * m_fAddAngle;
                m_vAddAngle.x -= fDistX * dTime * m_fAddAngle;
        }
        else
        {
                m_vAddAngle.y += fDist * dTime * m_fAddAngle;
                m_vAddAngle.x += fDistX * dTime * m_fAddAngle;
        }
        m_vVelocity.z -= m_fAddSpeed * dTime;//적은항상앞으로만 이동함..
        return fDist;


위의 코드중에 회전매트릭스의 회전백터를 선언할때요 z값에 -1.0f값을 넣어주는 이유를 모르겠어요..

책에있는 소스에다가 재가 임의로 넣어본  나머지 X축에 관한건... 이상하게 이동을하내요;;;
전혀 생각지도못한 회전을 보이는 적군캐릭들..;;;

적과 나의 포인터값을 뺀 백터의 노멀백터가 적이 날 정면으로 바라볼방향을 가지고 있잖아요..

적군의 지금 방향값을가진 노멀백터를 구한후에 내적을 구해서 회전각도에 곱해주면되던데...

적군이 y축으로만 회전을 하면서 이동하는건데요..재가 수정하는건 x축으로도 회전을 하게 할려구요..

현재 주인공 캐릭터도 x축으로 회전을 하게 했거든요...카메라가 뒤집히는 현상이 있어서 이것도 해결을해야하내요.;;;
그런데 우선 적군 캐릭들의 AI가 이상해 져서 이렇게 질문남깁니다..

설명이 이해가 않되신다면 리플달아주세요..(말을 잘 못해서...난감..ㅠ.ㅠ)