コード例 #1
0
ファイル: player.cpp プロジェクト: Taka03/Camerun2
//==============================================================================
//移動処理
//==============================================================================
//[input]
//	vTargetPos:対象位置
//	pCam:カメラデバイス
//	pField:チェックするマップ
//	IsShowMark:マークが表示されているか
//[return]
//	移動中かどうか
//==============================================================================
bool CPlayer::Move( Selene::Math::Vector3D vTargetPos, CCamera *pCam, 
					CField *pField, bool IsShowMark )
{
	if( IsShowMark )
	{
		/*カメラ方向を基準に移動*/
		
		m_vDirection.x = vTargetPos.x * pCam->GetRight().x + vTargetPos.y * (-pCam->GetFront().x);
		m_vDirection.y = 0.0f;
		m_vDirection.z = vTargetPos.x * pCam->GetRight().z + vTargetPos.y * (-pCam->GetFront().z);
		
		//
		
		
		float fLength = m_vDirection.Length();
		
		m_fSpeed = fLength * m_fStSpeed ;
		
		if( m_fSpeed > 2.0f )
		{
			m_fSpeed = 2.0f;
		}
		
		
		/*移動チェック*/
		if( m_vDirection.Length() > 0.0f )
		{
			if( vTargetPos.Length() > 0.5f )
			{	
				m_Rot.x = toF( Math::ATan2( -m_vDirection.z, -m_vDirection.x ) );
			}
			
			/*正規化*/
			m_vDirection /= fLength;
			
			/*移動(-1の場合は通れる)*/
			if( MoveCheck( pField ) == -1 )
			{
				m_vPos += m_vDirection * m_fSpeed;
				//CCommonObject::GetSoundMgr()->Play( CSoundManager::SND_PLAYERMOVE );
				return true;
			}
			
			else
			{
				m_fSpeed = 0.0f;
				
			}
			
		
		}
	}
		
	return false;
	
}
コード例 #2
0
void State_Move::Update()
{
	Player::Instance()->Move();
	if (!MoveCheck())
	{
		Player::Instance()->ChangeState(eSTATE::STAY);
	}

	if (Player::Instance()->IsAttack())
	{
		Player::Instance()->ChangeState(eSTATE::ATTACK1);
	}
}
コード例 #3
0
ファイル: character.cpp プロジェクト: Taka03/Camerun2
//==============================================================================
//移動処理
//==============================================================================
//[input]
//	vTargetPos:対象位置
//	pCam:カメラデバイス
//	pField:チェックするマップ
//==============================================================================
bool CCharacter::Move( Selene::Math::Vector3D vTargetPos, CCamera *pCam, CField *pField )
{
	m_vDirection.x = vTargetPos.x * pCam->GetRight().x + vTargetPos.y * (-pCam->GetFront().x);
	m_vDirection.y = 0.0f;
	m_vDirection.z = vTargetPos.x * pCam->GetRight().z + vTargetPos.y * (-pCam->GetFront().z);
	
	m_Rot.x = Math::ATan2( -m_vDirection.z, -m_vDirection.x );
	
	float fLength = m_vDirection.Length();
	
	m_fSpeed = fLength * 0.001f ;
	
	if( m_fSpeed > 2.0f )
	{
		m_fSpeed = 2.0f;
	}
	
	
	/*移動チェック*/
	if( m_vDirection.LengthSq() > 0.0f )
	{
		
		/*正規化*/
		m_vDirection /= fLength;
		
		/*移動(-1の場合は通れる)*/
		if( MoveCheck( pField ) == -1 )
		{
			m_vPos += m_vDirection * m_fSpeed;
			m_IsMoving = true;
			return true;
		}
		
		else
		{
			m_fSpeed = 0.0f;
			m_IsMoving = false;
			
		}
		
	}
	
	else
	{
		m_IsMoving = false;
	}
	
	return false;
	
}
コード例 #4
0
ファイル: EnemyManta.cpp プロジェクト: Taka03/Camerun2
//=============================================================================
//壁との判定
//=============================================================================
//[input]
//	pField:フィールド
//[return]
//	壁に当たっているかどうか
//=============================================================================
bool CEnemyManta::HitCheckWall( CField *pField )
{
	m_HitRay.vStart = m_vPos + Math::Vector3D( 0.0f, 3.0f, 0.0f );
	m_HitRay.vEnd = m_HitRay.vStart + m_vFront * 0.2f;
	
	Bool HitCheck = MoveCheck( pField );
	
	//通れる箇所の設定
	if( HitCheck == MASK_LAKE || HitCheck == -1 )
	{
		return false;
	}
	
	return true;
	
}
コード例 #5
0
ファイル: EnemyAmeus.cpp プロジェクト: Taka03/Camerun2
//=============================================================================
//壁との判定
//=============================================================================
//[input]
//	pField:フィールド
//[return]
//	壁に当たっているかどうか
//=============================================================================
bool CEnemyAmeus::HitCheckWall( CField *pField )
{
	m_HitRay.vStart = m_vPos + Math::Vector3D( 0.0f, 3.0f, 0.0f );
	m_HitRay.vEnd = m_HitRay.vStart + m_vFront * 0.2f;
	
	Renderer::SCollisionResultExtend RetEx;
	
	Bool HitCheck = MoveCheck( pField );
	
	//通れない箇所の設定
	if( HitCheck == MASK_LAKE || HitCheck == MASK_OUT )
	{
		return true;
	}
	
	else
	{
		return false;
	}
	
}
コード例 #6
0
ファイル: EnemyLizard.cpp プロジェクト: Taka03/Camerun2
//==============================================================================
//移動処理
//==============================================================================
//[input]
//	vTargetPos:対象位置
//	pCam:カメラデバイス
//	pField:チェックするマップ
//	IsShowMark:マークが表示されているか
//[return]
//	移動中かどうか
//==============================================================================
bool CEnemyLizard::Move( Selene::Math::Vector3D vTargetPos, CCamera *pCam, CField *pField, bool IsShowMark )
{
	m_vDirection.x = vTargetPos.x * pCam->GetRight().x + vTargetPos.y * (-pCam->GetFront().x);
	m_vDirection.y = 0.0f;
	m_vDirection.z = vTargetPos.x * pCam->GetRight().z + vTargetPos.y * (-pCam->GetFront().z);
	
	m_Rot.x = toF( Math::ATan2( -m_vDirection.z, -m_vDirection.x ) );
	
	float fLength = m_vDirection.Length();
	
	m_fSpeed = fLength * 0.001f ;
	
	if( m_fSpeed > 2.0f )
	{
		m_fSpeed = 2.0f;
	}
	
	
	/*移動チェック*/
	if( m_vDirection.LengthSq() > 0.0f )
	{
		/*正規化*/
		m_vDirection /= fLength;
		
		/*移動(-1, 0の場合は通れる)*/
		if( MoveCheck( pField ) == -1  )
		{
			if( IsShowMark )
			{
				m_Rot.y = DEG_TO_ANGLE( 0 );
				m_vPos += m_vDirection * m_fSpeed;
				m_IsMoving = true;
			}
				
			return true;
		}
		
		/*壁の場合上る*/
		else if( MoveCheck( pField ) == 0 )
		{
			if( IsShowMark )
			{
				m_Rot.y = DEG_TO_ANGLE( 90 );
				m_vPos.y += m_vDirection.Length() * m_fSpeed;
				m_vPos.x += m_vDirection.x * m_fSpeed;
			}
		}
		
		else
		{
			m_fSpeed = 0.0f;
			m_IsMoving = false;
			
		}
		
	}
	
	else
	{
		m_IsMoving = false;
	}
	
	return false;
	
}
コード例 #7
0
ファイル: Game.cpp プロジェクト: Reiuiji/Outer-World
//player move function
//check if player can move to that location, if so whey yay they can move
void Move(int &x,int &y,int xcen, int ycen,char Map[][MapMax])
{
    int  c=Input();
    if(!eventListener(x,y,xcen,ycen,Map,c))
    {
        switch(c)
        {
        case KEY_UP:
        case 'w':
            if(MoveCheck(x,y,xcen,ycen,0,1,Map) == 0)   //check if you can move to the next pos up
                y++;
            break;
        case KEY_DOWN:
        case 's':
            if(MoveCheck(x,y,xcen,ycen,0,-1,Map) == 0)  //checks move down
                y--;
            break;
        case KEY_LEFT:
        case 'a':
            if(MoveCheck(x,y,xcen,ycen,-1,0,Map) == 0)  //checks move left
                x--;
            break;
        case KEY_RIGHT:
        case 'd':
            if(MoveCheck(x,y,xcen,ycen,1,0,Map) == 0)   //checks move right
                x++;
            break;

        case 'q':
            if(MoveCheck(x,y,xcen,ycen,-1,+1,Map) == 0 && (MoveCheck(x,y,xcen,ycen,0,+1,Map) == 0 || MoveCheck(x,y,xcen,ycen,-1,0,Map) == 0))   //check move NW
            {
                x--;
                y++;
            }
            break;
        case 'e':
            if(MoveCheck(x,y,xcen,ycen,+1,+1,Map) == 0 && (MoveCheck(x,y,xcen,ycen,0,+1,Map) == 0 || MoveCheck(x,y,xcen,ycen,+1,0,Map) == 0))   //check move NE
            {
                x++;
                y++;
            }
            break;
        case 'z':
            if(MoveCheck(x,y,xcen,ycen,-1,-1,Map) == 0 && (MoveCheck(x,y,xcen,ycen,0,-1,Map) == 0 || MoveCheck(x,y,xcen,ycen,-1,0,Map) == 0))   //check move SW
            {
                x--;
                y--;
            }
            break;
        case 'c':
            if(MoveCheck(x,y,xcen,ycen,+1,-1,Map) == 0 && (MoveCheck(x,y,xcen,ycen,0,-1,Map) == 0 || MoveCheck(x,y,xcen,ycen,+1,0,Map) == 0))   //check move SE
            {
                x++;
                y--;
            }
            break;

        case 'b':   //Test Enter the Battle mode
            BattleMode = true;
            break;

        case 'n':
            DungeonMode = true;
            break;

        case '`':   //Exit the game display
            play = false;
            break;

        case '~':   //enable debug utility
            if(debug == false)
                debug = true;
            else
                debug = false;
            break;
        default:
            break;
        }
    }
}