void FixedUpdate() { switch (m_CurrentState) { case EnemyStates.IDLE: if (MathUtils.IsPointInsideCameraView(transform.position)) { if (!m_IsStatic) { m_CurrentState = EnemyStates.IMPULSE; } else { m_CurrentState = EnemyStates.WAIT_SHOOT; } } break; case EnemyStates.IMPULSE: Vector2 force = new Vector2(0, m_TargetPosition.y); m_SpaceshipBehaviour.MoveForce(force); if (Vector3.Distance(m_TargetPosition, transform.position) <= m_DistanceAccelerating) { GenerateTargetPosition(); } m_SpaceshipBehaviour.UsePrimaryInventorySlot(FireType.DEFAULT); break; case EnemyStates.WAIT: if (Vector3.Distance(m_TargetPosition, transform.position) <= m_DistanceToChangeDestination) { m_CurrentState = EnemyStates.IMPULSE; } m_SpaceshipBehaviour.UsePrimaryInventorySlot(FireType.DEFAULT); break; case EnemyStates.WAIT_SHOOT: m_SpaceshipBehaviour.UsePrimaryInventorySlot(FireType.DEFAULT); break; } if (Debug.isDebugBuild) { Debug.DrawLine(transform.position, m_TargetPosition, Color.yellow); } }