프로그래밍/Win32 API

##5. 삼각함수

hscho00 2020. 8. 20. 17:12

 

스크류 총알, 실드 구현

 

스토킹 몬스터

void CMonster::TracePosition(float _x, float _y)
{
    float disXPos = (float)_x - m_info.fX;
    float disYPos = (float)_y - m_info.fY;
    float diaSquared = disXPos * disXPos + disYPos * disYPos;

    if (diaSquared > m_info.fSpeed * m_info.fSpeed)
    {
        float hypotenuse = sqrtf(diaSquared);
        float fRadFront = acosf(disXPos / hypotenuse);

        // acosf는 0 ~ PI 값을 반환하므로 180도가 넘어가면 보정해야 함 
        if (disYPos > 0.f)
            fRadFront = 2 * PI - fRadFront;

        m_info.fX += m_info.fSpeed * cosf(fRadFront);
        m_info.fY -= m_info.fSpeed * sinf(fRadFront);
    }
}