Ejemplo n.º 1
0
    private void MoveToTarget()
    {
        if (m_RouteIndex >= m_Routes.Length)
        {
            Debug.LogError("CameraController_CameraRoutes01:MoveToTarget() m_RouteIndex >= m_Routes.Length");
            return;
        }

        Vector3 TargetPos        = m_Routes[m_RouteIndex].position;
        Vector3 CameraCurrentPos = m_CameraPtr.transform.position;
        Vector3 DistanceVecNow   = TargetPos - CameraCurrentPos;

        if (DistanceVecNow.sqrMagnitude < m_CloseDistanceThreasholdSquare)
        {
            // 立即抵達
            m_CameraPtr.transform.position = m_Routes[m_RouteIndex].position;
            m_CameraPtr.transform.rotation = m_Routes[m_RouteIndex].rotation;
            m_CameraState = CameraRoutesState.CheckNextTarget;
        }
        else
        {
            // 還未抵達,就內差前往
            m_CameraPtr.transform.rotation = Quaternion.Lerp(m_CameraPtr.transform.rotation,
                                                             m_Routes[m_RouteIndex].transform.rotation,
                                                             Time.deltaTime * m_InterpolateSpeed);
            m_CameraPtr.transform.position = Vector3.Lerp(CameraCurrentPos,
                                                          TargetPos,
                                                          Time.deltaTime * m_InterpolateSpeed);
        }
    }
	public void StartMove()
	{
		if( m_RouteIndex < m_Routes.Length )
		{
			m_CameraState = CameraRoutesState.MoveToTarget ;
		}
	}
Ejemplo n.º 3
0
 public void StartMove()
 {
     if (m_RouteIndex < m_Routes.Length)
     {
         m_CameraState = CameraRoutesState.MoveToTarget;
     }
 }
Ejemplo n.º 4
0
    private void MoveToTarget()
    {
        if (m_RouteIndex >= m_Routes.Length)
        {
            Debug.LogError("CameraController_CameraRoutes01:MoveToTarget() m_RouteIndex >= m_Routes.Length");
            return;
        }

        Vector3 TargetPos      = m_Routes[m_RouteIndex].Position;
        Vector3 CurrentPos     = m_CameraPtr.transform.position;
        Vector3 DistanceVecNow = TargetPos - CurrentPos;

        if (DistanceVecNow.sqrMagnitude < m_CloseDistanceThreasholdSquare)
        {
            // 立即抵達
            m_CameraPtr.transform.position = m_Routes[m_RouteIndex].Position;
            m_CameraPtr.transform.LookAt(m_Routes[m_RouteIndex].TargetPosition);
            m_CameraState = CameraRoutesState.CheckNextTarget;
        }
        else
        {
            // 繼續推進
            Vector3 NextPosition = Vector3.Lerp(m_CameraPtr.transform.position,
                                                m_Routes[m_RouteIndex].Position,
                                                Time.deltaTime * m_InterpolateSpeed);
            // Debug.Log( m_CameraPtr.transform.position + " " + m_Routes[ m_RouteIndex ].Position + " "  + Time.deltaTime * m_InterpolateSpeed + "=>" + NextPosition ) ;
            m_CameraPtr.transform.position = NextPosition;

            m_PreviousTarget = Vector3.Lerp(m_PreviousTarget,
                                            m_Routes[m_RouteIndex].TargetPosition,
                                            Time.deltaTime * m_InterpolateSpeed);
            m_CameraPtr.transform.LookAt(m_PreviousTarget);
        }
    }
Ejemplo n.º 5
0
 private void CheckNextTarget()
 {
     ++m_RouteIndex;
     if (m_RouteIndex >= m_Routes.Length)
     {
         m_CameraState = CameraRoutesState.Closed;
     }
     else
     {
         m_CameraState = CameraRoutesState.MoveToTarget;
     }
 }
Ejemplo n.º 6
0
 private void CheckNextTarget()
 {
     ++m_RouteIndex;
     if (m_RouteIndex >= m_Routes.Length)
     {
         // the end of story
         m_CameraState = CameraRoutesState.Closed;
     }
     else
     {
         // keep move to next position
         m_CameraState = CameraRoutesState.MoveToTarget;
     }
 }
	public void StopMove()
	{
		m_CameraState = CameraRoutesState.Pause ;
	}
	private void CheckNextTarget()
	{
		++m_RouteIndex ;
		if( m_RouteIndex >= m_Routes.Length ) 
		{
			m_CameraState = CameraRoutesState.Closed ;
		}
		else
		{
			m_CameraState = CameraRoutesState.MoveToTarget ;
		}
		
	}	
	private void MoveToTarget()
	{
		if( m_RouteIndex >= m_Routes.Length ) 
		{
			Debug.LogError( "CameraController_CameraRoutes01:MoveToTarget() m_RouteIndex >= m_Routes.Length" ) ;
			return ;
		}
		
		Vector3 TargetPos = m_Routes[ m_RouteIndex ].Position ;
		Vector3 CurrentPos = m_CameraPtr.transform.position ;
		Vector3 DistanceVecNow = TargetPos - CurrentPos ;
		
		if( DistanceVecNow.sqrMagnitude < m_CloseDistanceThreasholdSquare )
		{
			// 立即抵達
			m_CameraPtr.transform.position = m_Routes[ m_RouteIndex ].Position ;
			m_CameraPtr.transform.LookAt( m_Routes[ m_RouteIndex ].TargetPosition ) ;						
			m_CameraState = CameraRoutesState.CheckNextTarget ;
		}
		else
		{
			// 繼續推進
			Vector3 NextPosition = Vector3.Lerp( m_CameraPtr.transform.position , 
												 m_Routes[ m_RouteIndex ].Position , 
												 Time.deltaTime * m_InterpolateSpeed ) ;			
			// Debug.Log( m_CameraPtr.transform.position + " " + m_Routes[ m_RouteIndex ].Position + " "  + Time.deltaTime * m_InterpolateSpeed + "=>" + NextPosition ) ;
			m_CameraPtr.transform.position = NextPosition ;
			
			m_PreviousTarget = Vector3.Lerp( m_PreviousTarget , 
											 m_Routes[ m_RouteIndex ].TargetPosition , 
											 Time.deltaTime * m_InterpolateSpeed ) ;			
			m_CameraPtr.transform.LookAt( m_PreviousTarget ) ;
		}
	}
Ejemplo n.º 10
0
 public void StopMove()
 {
     m_CameraState = CameraRoutesState.Pause;
 }
	private void CheckNextTarget()
	{
		++m_RouteIndex ;
		if( m_RouteIndex >= m_Routes.Length ) 
		{
			// end of story
			m_CameraState = CameraRoutesState.Closed ;
		}
		else
		{
			// keeep moving
			m_CameraState = CameraRoutesState.MoveToTarget ;
		}
	}	
	private void MoveToTarget()
	{
		if( m_RouteIndex >= m_Routes.Length ) 
		{
			Debug.LogError( "CameraController_CameraRoutes01:MoveToTarget() m_RouteIndex >= m_Routes.Length" ) ;
			return ;
		}
		
		Vector3 TargetPos = m_Routes[ m_RouteIndex ].position ;
		Vector3 CameraCurrentPos = m_CameraPtr.transform.position ;
		Vector3 DistanceVecNow = TargetPos - CameraCurrentPos ;
		
		if( DistanceVecNow.sqrMagnitude < m_CloseDistanceThreasholdSquare )
		{
			// 立即抵達
			m_CameraPtr.transform.position = m_Routes[ m_RouteIndex ].position ;
			m_CameraPtr.transform.rotation = m_Routes[ m_RouteIndex ].rotation ;
			m_CameraState = CameraRoutesState.CheckNextTarget ;
		}
		else
		{
			// 還未抵達,就內差前往
			m_CameraPtr.transform.rotation = Quaternion.Lerp( m_CameraPtr.transform.rotation , 
															  m_Routes[ m_RouteIndex ].transform.rotation , 
															  Time.deltaTime * m_InterpolateSpeed ) ;
			m_CameraPtr.transform.position = Vector3.Lerp( CameraCurrentPos , 
														   TargetPos , 
														   Time.deltaTime * m_InterpolateSpeed ) ;
		}
	}