void Cube3D::AnimateStick(char m, int rot) { int c_axis; float c_rot; if(!TransCount) return AnimateMove(m, rot); for(int i = 0; i < 9; ++i) Transform[i+9] = Transform[i]; c_axis = TransAxis; c_rot = TransRot; AnimateMove(m, rot); if(c_rot * TransRot < 0) TransRot += c_rot/2; TransCount = 2; }
VOID CCharactor::UpdateByInput( ) { BOOL bSetAni = FALSE; D3DXVECTOR3 a_vControl = D3DXVECTOR3(0.0f, 0.0f, 0.0f); m_vColissionControl = D3DXVECTOR3(0.0f, 0.0f, 0.0f); FLOAT a_fAngle = 0.0f; // 공격중이 아닐때만 이동 if ( m_pWeapon->Get_nFrame() == 0 ) { a_vControl = CInput::GetInstance()->Get_Pos(); a_fAngle = CInput::GetInstance()->Get_MouseYRotate(); } if (m_fKnockBack > 0.1) { D3DXVECTOR3 vKnockControl; vKnockControl = m_vControl - m_vKnockControl; vKnockControl.y = 0; D3DXVec3Normalize( &vKnockControl, &vKnockControl ); m_vColissionControl = vKnockControl * ( m_fKnockBack * 2.5f * CFrequency::GetInstance()->getFrametime() ); m_fKnockBack *= 0.9f; } else { m_fKnockBack = 0.0f; } a_fAngle += m_fAngle; if ( a_fAngle < 0.0f ) { a_fAngle += MTP_FUN::Deg2Rad<360>::radians; } else if ( a_fAngle > MTP_FUN::Deg2Rad<360>::radians ) { a_fAngle -= MTP_FUN::Deg2Rad<360>::radians; } a_vControl.z += AnimateAttack() * CFrequency::GetInstance()->getFrametime(); // 전진 후진 처리 if( a_vControl.z != 0 ) { bSetAni = TRUE; D3DXMatrixRotationY( &m_matControl, a_fAngle ); m_vFowardVector = D3DXVECTOR3(m_matControl._13, 0.0f, -m_matControl._33); D3DXVec3Normalize(&m_vFowardVector, &m_vFowardVector); m_vColissionControl += (m_vFowardVector * a_vControl.z); } // 좌우 처리 if( a_vControl.x != 0) { bSetAni = TRUE; D3DXMatrixRotationY( &m_matControl, a_fAngle + 1.5707963f ); m_vSideStepVector = D3DXVECTOR3(m_matControl._13, 0.0f, -m_matControl._33); D3DXVec3Normalize(&m_vSideStepVector, &m_vSideStepVector); m_vColissionControl += (m_vSideStepVector * a_vControl.x); } AnimateMove( bSetAni ); m_pBoundBox->MatrixIdentity(); m_pBoundBox->SetAngleY( a_fAngle ); Collision( m_vColissionControl ); m_vPreControl = m_vControl; m_vControl += m_vColissionControl; m_fAngle = a_fAngle; m_vLerpControl = m_vControl; Set_ControlTranslate( 0, m_vControl.x ); Set_ControlTranslate( 1, m_vControl.y ); Set_ControlTranslate( 2, m_vControl.z ); Set_ControlRotate( 1, m_fAngle + m_fAniAngle ); Calcul_MatWorld(); Update(); }