Exemple #1
0
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;
}
Exemple #2
0
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();
}